空值合并操作符( ?? ) 是一个逻辑操作符,当左侧操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数
与逻辑或操作符(||)不同,逻辑或操作符会在操作数为假值时返回右侧操作数。
// 例如:'' 或 0 时,下面的例子
0 ?? 'liyading' // 0
0 || 'liyading' // liyading
'' ?? 'liyading' // ''
'' || 'liyading' // liyading
可选链操作符 ( ?. ) ,当尝试访问可能不存在的对象属性时,可选链操作符将会是表达式更短, 更简明
const obj = {
name: 'Alice',
cat: {
name: 'XI'
}
}
console.log(obj.dog?.name) // undefined
console.log(obj.cat?.name) // XI
console.log(obj.someMethod?.()) // undefined