我在 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(使用前将#替换为@)