var { foo: bar } = { foo: 123 };
有效。
{ foo: bar } = { foo: 123 };
没有。
当bar
是全局变量但是在函数内部发生解构时,如何使后者工作?
答案 0 :(得分:4)
如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中并不适合我,尽管该书说这应该有效。