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});
这类似于单独拥有一个对象字面量(无论出于何种原因):
{"a": 42} // parse error
({"a": 42}) // works
为什么这在使用新的 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});
这类似于单独拥有一个对象字面量(无论出于何种原因):
{"a": 42} // parse error
({"a": 42}) // works