Javascript对象解构

时间:2015-01-09 15:59:02

标签: javascript ecmascript-6

为什么在使用新的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并且我没有提及我尝试的语法,我认为必须有充分的理由,我只是想了解原因。

1 个答案:

答案 0 :(得分:4)

在您的示例中,第一个{不明确,解析器会将其解释为的开头。虽然{a, b, c}是有效块,但以下赋值运算符无效。

将所有内容包装在括号中,它将正确解析:

({a, b, c} = {a:1, b:2, c:3});

Example


这类似于拥有一个对象文字(无论出于何种原因):

{"a": 42}   // parse error
({"a": 42}) // works