ES6 中的非局部解构赋值

Non-local destructuring assignment in ES6

var { foo: bar } = { foo: 123 }; 有效。

{ foo: bar } = { foo: 123 }; 没有。

bar 是全局变量,但解构发生在函数内部时,如何使后者工作?

understandinges6 book 中的 "Syntax Gotcha" 部分所述,您需要使用括号将其括起来,否则会产生语法错误。左大括号通常是块的开头,块不能是赋值表达式的一部分。

这个 worked 对我来说:

var bar;
({ foo: bar } = { foo: 123 });
console.log(bar); // 123

我也试过:

var bar;
({ foo: bar }) = { foo: 123 };
console.log(bar); // ReferenceError: Invalid left-hand side in assignment at eval

但后者在 es6lint 中对我不起作用,尽管书上说它应该起作用。