?? – 空值合并操作符
当左侧为 null
或者 undefined
时,返回右侧操作数, 否则返回左侧操作数
null ?? 111
>>> 111
|| – 逻辑或操作符
当左侧为假值 (如 false、0、空字符串) 时,返回右侧 操作数, 否则返回左侧操作数
ps:一些行为可能会导致意料之外的行为
0 || 111
?. – 可选链操作符
读取对象深度属性, 不必验证每个引用是否存在, 如果为 null 或 undefined, 直接返回undefined, 而不会导致错误
const obj = {
a: {
b: {
}
d: () => {console.log('ddd')}
e: 'eee'
}
}
obj?.a?.b?.c
>>> undefined
obj?.a?.b?.c
>>> undefined
obj?.a?.b?.e?.()
>>> undefined