对象销毁与销毁销毁之间的区别?

时间:2018-08-08 14:39:53

标签: javascript ecmascript-6

例如,如果我有一个这样的对象:

let obj = { a: 1, b: 2 }
let { a, b } = obj;
console.log(a, b); // output 1, 2

但是如果a和b被初始化,就像这样:

let obj = { a: 1, b: 2 };
let a = 3, b = 4;
{ a, b } = obj;
console.log(a, b); // error

它们之间有什么区别,为什么第二个输出错误?

1 个答案:

答案 0 :(得分:7)

您需要在destructuring assignment周围加上括号,以将破坏与无法分配的block statement区别开来。

Assignment without declaration

  

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

     

{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, 2