空值运算符-可选链
?? 非空操作符
??只会排除 null undefined, 与 || 比较 || 会排除 null undefined false 0 ''
当左侧的结果为 null undefined 时才会执行右边
const a = ''
const b = '真'
console.log(a || b) // 真
console.log(a ?? b) // ''
??= 非空赋值
同上
let a = '';
a ??= '真假';
console.log('---', a); // ''
?. 可选链
可选链会判断左边是否存在,只执行后面的,可用于对象和数组,在层级深,不确定是否存时
const a = null
a.f(11) // Cannot read properties of null (reading 'f')
a?.f(11) // 不会报错