前言在开发过程中要得到一个深度嵌入的值需要大量的判断来保证没有数据报错,例如:constobj={a:{b:{c:"1"}}}选择c,正确的做法是:constcValue=(obj&&obj.a&&obj.a.b&&obj.a.b.c)||'';//需要判断4二、每一层是否有值ES2020OptionalChainingOperator(?.):调用chain时直接判断左边的对象是null还是undefined。如果是,则不会进行进一步的计算,但会返回undefined。具体用法请参考ES6(ES6)取cconstcValue=obj?.a?.b?.c//1项目中如何支持optionalchains1.安装依赖(Babel)为了避免兼容问题,安装相应的转换器npminstall@babel/plugin-proposal-optional-chaining2.在project.babel.config.js文件中添加:{"plugins":["@babel/plugin-proposal-optional-chaining",]}友情提示:暂不支持optionalchain语法3.实际示例全局函数导出默认函数useOptionChain(target){returnnewProxy(target,{get:(target,propKey)=>{constproKeyArr=propKey.split('?.')returnproKeyArr.reduce((a,b)=>a?.[b],target)}})}使用
