空值合并运算符(Nullish coalescing Operator)
空值合并操作符( ?? )是一个逻辑操作符,当左侧的操作数为 null或者undefined时,返回其右侧操作数,否则返回左侧操作数。
const foo = 0 ?? "foo"
const bar = null ?? "bar"
const boo = undefined ?? "boo"
console.log(foo) // 0
console.log(bar) // bar
console.log(boo) // bar
与||的区别:|| 遇到假值(例如'',0,NaN,false)会返回右操作数,例如:
const foo = 0 || "foo"
const bar = null || "bar"
const boo = undefined || "boo"
const be = false || "be"
console.log(foo) // foo
console.log(bar) // bar
console.log(boo) // bar
console.log(be) // be
注意:`??`和`||`不能同时使用,否则会报错。
??= 如果是null/undefined,赋值为右侧的值
let obj = {age:8,name:''}
obj.number ??= 90;
obj.name ??= 'lily';
console.log(obj); // { age: 8, name: '', number: 90 }
与 ||= 的区别在于,|| 判断假值:
let obj = {age:8,name:''}
obj.number ||= 90;
obj.name ||= 'lily';
console.log(obj); // { age: 8, name: 'lily', number: 90 }