一、链判断运算符(?. 运算符)
实际开发中,如果要读取对象内部的某个属性,往往需要先判断一下该对象是否存在。
比如,要读取 user.firstName
,安全的写法应该是下面这样的:
const firstName = (user && user.firstName) || 'default'
这样的层层判断非常麻烦,因此 ES2020 引入了“链判断运算符”(optional chaining operator)?. 来
简化上面的写法
const firstName = user?.firstName || 'default'
上面代码使用了
?.
运算符,直接在链式调用的时候判断,左侧的对象是否为null
或undefined
。如果是的,就不再往下运算,而是返回undefined
。
使用这个运算符,有几个注意点:
(1)短路机制
a?.[++x]
// 等同于
a == null ? undefined