在编程中经常会xua需要读取一个对象的属性值是否存在例如:
// 错误的写法
const name = response.result.userInfo.name || '';
// 正确的写法
const name= (response
&& response.result
&& response.result.userInfo
&& response.result.userInfo.name) || '';
name属性在对象的第四层,所以需要判断四次,每一层是否有值,这样的层层判断非常麻烦,可以使用“链判断运算符”(?.),简化上面的写法。
const name = response?.result?.userInfo?.name || '';
上面代码使用了?.运算符,直接在链式调用的时候判断,左侧的对象是否为null或undefined。如果是的,就不再往下运算,而是返回undefined。
ECMAScript 6 入门