常用的解构
const obj = {
name: '张三'
age: 19
}
const { age } = obj
解构之后重命名,这种用法是否有隐患const { age: nianling } = obj
常用的解构
const obj = {
name: '张三'
age: 19
}
const { age } = obj
解构之后重命名,这种用法是否有隐患const { age: nianling } = obj
1.如果名字起得不好,有被同事乱锤的隐患
2.如果所有结构都这样,有代码体积膨胀的隐患
3.一般是原始字段名称不容易阅读,或者局部有同名变量的情况需要别名,否则就有增加阅读复杂的隐患
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
你想说有啥隐患呢?如果你感觉隐隐有些不对,那么这种不安来自哪里?
且不说这么做有没有隐患,我想说为什么需要这么做。
假设有一个对象列表
然后要写一个查询函数
那么这个查询函数有可能是这样实现的
很遗憾,由于 find 里 Lambda 的 name 参数和 findPerson 的 name 参数同名,上面的代码是不能正确执行的。如果不想改 findPerson 的参数名,那就得改 Labmda 的参数。但 Lambda 的参数是是取的属性名,而属性名是不能说改就改的,所以……只好采用重命名语法
在函数体内容要把某个对象的属性解构出来的时候,也会遇到类似的问题。这就是为什么需要解构重命名语法的原因。如果你觉得这样写可能存在隐患,大可以不使用解构语法,直接使用对象来处理,比如
说实在的,在这些情况下,我一般不会使用解构,因为直接使用对象属性访问的语法语义更明确。
解构在某些情况下确实可以减化代码,但用还是不用,主要还是取决于代码是否简单易懂,不会有太多容易造成混淆的东西。