在 JavaScript 中,以下给出错误:
{ __proto__: [] } instanceof Array;
如果我把它包围在(brackets)
它没有错误:
({ __proto__: [] } instanceof Array);
为什么是这样?
当口译员看到{
,默认情况下,它会认为你正在声明一个新的块,例如
因此:
{
__proto__: []
} instanceof Array
没有多大意义 - 你不能instanceof
一个块。
但是当它被括在括号中时,解释器知道期望一个value在括号内,而不是块 - 因此它将内部的所有内容评估为表达相反,并且(正确地)解析{ __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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)