一。ES2020链判断运算符
var aa={b:{c:{e:"1000"}}}
var b=aa?.c?.f;
console.log("b",b);//undefined
if(b){
console.log("true",b)
}else{
console.log("中途出现undefined")
}
如果遇到中途出现undefined就返回undefined
二.我们自己实现一次
var aa={b:{c:{e:100}}}
function catchUndefined(str,scope){
var strArr=str.split(".");
var target;
for(let i=0;i<strArr.length;i++){
let item=strArr[i];
//第一次赋值
if(!target){
target=scope[item];
}
else{
target=target[item];
}
//如果中途出现undefined就中断,且返回undefined
if(target==undefined&&i!==strArr.length-1){
target=undefined;
break;
}
}
return target;
}
console.log("target",catchUndefined("b.c.e",aa)); //100
console.log("target",catchUndefined("b.f.e",aa)); //undefined