销毁分配原因错误:“意外令牌=“

时间:2018-07-02 11:39:26

标签: javascript destructuring unexpected-token

假设我在es6中使用此语法:

let a, b;

{a, b} = { a: 100, b: 300 };

代码将正确运行;

但是让我们这样重写:

function fn() {
    return { a: 100, b: 200 }
}

let a, b;

{ a, b } = fn();

当我运行上面的代码时,它说出意外的令牌“ =“; 我有点困惑,有什么区别?

3 个答案:

答案 0 :(得分:9)

添加大括号:({ a, b } = fn());

来自Mozilla文档:

使用不带声明的对象文字解构赋值时,赋值语句周围的圆括号(...)是必需的语法。

{a, b} = {a: 1, b: 2}是无效的独立语法,因为左侧的{a, b}被认为是一个块,而不是对象文字。

但是,({a, b} = {a: 1, b: 2})有效,var {a, b} = {a: 1, b: 2}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

答案 1 :(得分:0)

将对象赋值括在括号中

a["events"]

答案 2 :(得分:-2)

使用a,b代替{a,b}:

let a, b;
a,b = { a: 100, b: 300 };


function fn() {
    return { a: 100, b: 200 }
}

let a, b;
a,b = fn();