可选链 Optional chaining
# 可选链 Optional chaining
可让我们在查询具有多层级的对象时,不再需要进行冗余的各种前置校验。
const user = {
address: {
street: 'xx街道',
getNum() {
return '80号'
}
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
在之前的语法中,想获取到深层属性或方法,不得不做的前置校验,否则很容易命中 Uncaught TypeError: Cannot read property...
这种错误,这极有可能让你整个应用挂掉。
const street = user && user.address && user.address.street
const num = user && user.address && user.address.getNum && user.address.getNum()
console.log(street, num)
1
2
3
2
3
用了 Optional Chaining ,上面代码会变成:
const street2 = user?.address?.street
const num2 = user?.address?.getNum?.()
console.log(street2, num2)
1
2
3
2
3
可选链中的 ?.
表示如果问号左边表达式有值,就会继续查询问号后面的字段。如果为 null
或者 undefined
,该表达式的短路返回值是 undefined
。
根据上面可以看出,用可选链可以大量简化类似繁琐的前置校验操作,而且更安全。
# 参考资料
(完)