?.
链式调用不报错
let a = {};
console.log(a?.b?.c); // undefined
// 当d可能为方法时
console.log(a.b?.c?.());
??
当前一个值为null或者为undefined时执行后面
console.log(undefined ?? 1); // 1
console.log(0 ?? 1); // 0
let a = {};
a.b ??= 2;
console.log(a.b); // 2
||
当前一个值取boolean为false时执行后面
console.log(0||1); // 1
console.log(undefined || 1); // 1;
let a = {};
a.b ||=1;
console.log(a.b); // 1
a.b &&=2;
console.log(a.b); // 2