let obj = {
a:{
c:{
d:'我是最里面的'
},
e:'我是中间的'
},
b:15,
c:"是哪里"
};
console.log(obj?.a?.c?.d);//我是最里面的
console.log(obj?.a?.f);//undefined
我们判断对象一般都是访问属性判断是否有这个属性,没有返回undefined,有的话返回值,es6新增链判断运算符,可以帮我们更好的做这件事,
我们写的时候如果第一次没有访问到,继续向下访问就会报错,如:
const firstName = message.body.user|| 'default';
如果没有body属性就是undefined,但是后面继续访问user就会报错,
链运算符
const firstName = message?.body?.user?.firstName || 'default';
这个时候访问body返回undefined,继续向下访问不会报错,可以减少我们写代码时的报错
上面代码使用了?.
运算符,直接在链式调用的时候判断,左侧的对象是否为null
或undefined
。如果是的,就不再往下运算,而是返回undefined