首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象解构和解构赋值之间的区别?

对象解构和解构赋值之间的区别?
EN

Stack Overflow用户
提问于 2018-08-08 22:39:53
回答 1查看 72关注 0票数 0

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

代码语言:javascript
复制
let obj = { a: 1, b: 2 }
let { a, b } = obj;
console.log(a, b); // output 1, 2

但是如果a和b被初始化,如下所示:

代码语言:javascript
复制
let obj = { a: 1, b: 2 };
let a = 3, b = 4;
{ a, b } = obj;
console.log(a, b); // error

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

EN

回答 1

Stack Overflow用户

发布于 2018-08-08 22:41:42

你需要用圆括号将destructuring assignment括起来,这样就可以将解构与block statement区分开来,因为对它的赋值是不可能的。

Assignment without declaration

当使用不带声明的对象字面解构赋值时,

赋值语句两边的圆括号( ... )是必需的语法。

{a, b} = {a: 1, b: 2}不是有效的独立语法,因为左侧的{a, b}被认为是一个块,而不是对象文字。

但是,和var {a, b} = {a: 1, b: 2}一样,({a, b} = {a: 1, b: 2})也是有效的

注意:您的 ( ... ) 表达式前面需要有分号,或者它可以用于在上一行执行函数。

代码语言:javascript
复制
let obj = { a: 1, b: 2 };
let a = 3, b = 4;

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51749446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档