Javascript 对象解构

Javascript object destructuring

为什么这在使用新的 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,但没有提到我正在尝试的语法,我认为一定有充分的理由,我只是想了解原因。

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

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

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

Example


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

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