[英]Difference between object destructuring and and destructuring assignment?
例如,如果我有一个这样的对象:
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
它们有什么区别,为什么第二个输出错误?
您需要在解构赋值周围加上括号,以便将解构与无法对其进行赋值的块语句区分开来。
在没有声明的情况下使用对象文字解构赋值时,赋值语句周围的圆括号
( ... )
是必需的语法。
{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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.