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 中对我不起作用,尽管书上说它应该起作用。
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 中对我不起作用,尽管书上说它应该起作用。