如何在JavaScript解构赋值中处理命名冲突问题
在嵌套解构赋值中为重复属性设置别名的正确方式
当然可以实现!你想要的别名方案确实存在,只是语法和你设想的as不一样——在JavaScript解构赋值里,我们用**冒号:**来完成重命名,和你之前用Babel处理import命名冲突的思路本质是一致的,只是语法细节不同。
针对你的场景,正确的写法应该是这样:
const { a: { b: { c: c1 } }, a2: { b: { c: c2 } } } = { a: { b: { c: 10 } }, a2: { b: { c: 90 } } }; console.log(c1); // 输出 10 console.log(c2); // 输出 90
简单解释一下语法逻辑:
在解构赋值中,冒号的作用就是「把解构出的原属性值,赋值给你指定的新变量名」。比如你之前写的:
const { a: { b: { c } } } = { a: { b: { c: 10 } } };
其实是const { a: { b: { c: c } } } = ...的简写——当原属性名和你要赋值的变量名相同时,可以省略冒号和后面的变量名。而当你需要重命名时,只需要把后面的c换成你想要的新变量名(比如c1、c2)就可以了。
这样修改后,你就能同时获取到两个不同的c值,分别存储在c1和c2变量里啦。
内容的提问来源于stack exchange,提问作者scott1028
相关产品推荐
相关产品推荐

