我有以下代码示例:
var a = 10;
({a}) = 0;
在Google Chrome浏览器中,它显示错误:SyntaxError: Invalid destructuring assignment target
在Firefox中,它显示错误:ReferenceError: invalid assignment left-hand side
实际上,我想了解这是哪种错误?
答案 0 :(得分:2)
好吧,这只是无效的语法。您are not allowed在括号中放置一个破坏模式 [1] :
如果 LeftHandSideExpression 既不是 ObjectLiteral 也不是 ArrayLiteral ,则这是早期参考错误 [2] LeftHandSideExpression 的IsValidSimpleAssignmentTarget为
false
。
作为 LeftHandSideExpression 的({a})
是 ParenthesizedExpression ,而不是 ObjectLiteral ,并且括号中不包含一个简单的分配目标。
您可能正在寻找a parenthesised statement to allow the destructuring pattern:
var a = 10;
({a} = 0);
1:令人惊讶的是(a) = 0;
is a valid statement。
2:Chrome似乎是错误的,先抛出SyntaxError
,然后