Che*_*Lee 0 javascript ecmascript-6
例如,如果我有这样的对象:
let obj = { a: 1, b: 2 }
let { a, b } = obj;
console.log(a, b); // output 1, 2
Run Code Online (Sandbox Code Playgroud)
但是如果a和b被初始化,就像这样:
let obj = { a: 1, b: 2 };
let a = 3, b = 4;
{ a, b } = obj;
console.log(a, b); // error
Run Code Online (Sandbox Code Playgroud)
它们之间有什么区别,为什么第二个输出错误?
你需要在解构赋值周围使用括号来区分解构和块语句,在块语句中无法赋值.
在
( ... )没有声明的情况下使用对象文字解构赋值时,赋值语句周围的圆括号是必需的语法.
{a, b} = {a: 1, b: 2}不是有效的独立语法,因为{a, b}左侧被视为块而不是对象文字.但是
({a, b} = {a: 1, b: 2}),原样是有效的var {a, b} = {a: 1, b: 2}注意:您的
( ... )表达式需要以分号开头,或者可以用于在前一行执行函数.
let obj = { a: 1, b: 2 };
let a = 3, b = 4;
({ a, b } = obj);
console.log(a, b); // 1, 2Run Code Online (Sandbox Code Playgroud)