在 JavaScript 中,以下给出错误:
{ __proto__: [] } instanceof Array;
如果我将它括在 (方括号)
中,它没有错误:
({ __proto__: [] } instanceof Array);
这是为什么?
最佳答案
当解释器看到一个{
时,默认情况下,它会认为你正在声明一个新的 block ,例如
{
console.log('foo');
}
结果:
{
__proto__: []
} instanceof Array
没有多大意义 - 你不能 instanceof
block 。
但是当它被括在圆括号中时,解释器知道期望圆括号内有一个值,而不是一个 block - 所以它将圆括号内的所有内容计算为一个表达式,并且(正确地)将 { __proto__: [] }
解析为一个对象。
这与为什么在解构为已分配的变量时必须在该行两边加上括号的原因完全相同:
let x, y;
({x, y} = { x: 'foo', y: 'bar'});
console.log('done ' + x);
有效,但没有 ()
就不行:
let x, y;
{x, y} = { x: 'foo', y: 'bar'};
console.log('done ' + x);
关于javascript - () 括号,它在 ({__proto__ : []} instanceof Array) in JavaScript 的语句中做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50034429/