为什么在使用新的es6解构语法
时这无效var a, b, c;
{a, b, c } = {a:1, b:2, c:3};
这是:
var {a, b, c } = {a:1, b:2, c:3};
console.log(a, ' ', b, ' ',c);
这是这样的:
var a = 1;
var b = 3;
[a, b] = [b, a];
我读过the MDN documentataion并且我没有提及我尝试的语法,我认为必须有充分的理由,我只是想了解原因。
答案 0 :(得分:4)
在您的示例中,第一个{
不明确,解析器会将其解释为块的开头。虽然{a, b, c}
是有效块,但以下赋值运算符无效。
将所有内容包装在括号中,它将正确解析:
({a, b, c} = {a:1, b:2, c:3});
这类似于拥有一个对象文字(无论出于何种原因):
{"a": 42} // parse error
({"a": 42}) // works