意外的解构行为,在更深层次解构时必须声明一个键两次[重复]

2024-05-02

我在 ES6 中进行一些解构,遇到了意想不到的情况。这是所发生事件的一个简单版本。

let obj = {x: {y: 5}};
let {x: {y}} = obj;

console.log(x); // x is not defined
console.log(y); // 5

在我的用例中,我需要访问两者x and y。我本以为x也被解构了。相反,为了获得预期的效果,我必须这样做:

let obj = {x: {y: 5}};
let {x, x: {y}} = obj;

console.log(x); // {"y":5}
console.log(y); // 5

不过,我认为{x, x: {y}}看起来很奇怪而且不直观。是否存在我不知道的解构秘密,或者这只是一个微小的解构陷阱?


This:

let {x: {y}} = obj;

是以下缩写:

let {x: {y: y}} = obj;

解构将冒号的左侧(键)与数据进行匹配,并将结果放入右侧(赋值目标,通常是变量)。所以,x只是这里的关键,而y既是键又是新声明的变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

意外的解构行为,在更深层次解构时必须声明一个键两次[重复] 的相关文章

随机推荐