空值合并操作符( ?? )是一个逻辑操作符,当左侧的值为null或undefined时,返回其右侧的值,否则返回其左侧的值。
let str = null??"nothing"
console.log(str) //nothing
可选链操作符( ?. )允许读取位于连接对象链深处的属性值,在引用为空( null或undefined )的情况下不会引起报错,而是返回undefined。
let obj = {
msg:'nothing'
}
console.log(obj?.name) //undefined
空值合并操作符和可选链操作符可同时使用,这对设置默认值是非常有用的。
let obj = {
msg:'nothing'
}
console.log(obj?.name??'小结巴') //小结巴