ES2020 条件式属性访问

ES2020新增的两个属性访问表达式

expression ?.identifier
expression ?.[expression]

在使用普通属性访问表达式时,如果.或[]左侧的表达式值为null或undefined,会报TypeError。使用?.或?[]可以防止这种错误发生。

比如表达式a?.b,如果a是null或undefined,那么整个表达式求值结果为undefined,不会常识访问属性b。如果a是其他值,则a?.b求值为a.b的值,如果a没有名为b的属性,则整个表达式的值还是undefined。

let a = {b:null};
a.b?.c.d  //=>undefined

通过?.访问属性是短路操作,只要左侧的子表达式值为null或undefined,整个表达式立即求值为undefined,不会再进一步访问属性。

你可能感兴趣的:(ES2020 条件式属性访问)