空值合并运算符(??)是一个逻辑运算符,当左侧的操作数据为 null 或 undefined 时,返回其右侧数据,否则返回左侧操作数

与逻辑或运算符(||)不同,逻辑或运算符会在左侧数据为假值时返回右侧数据,也就是说,如果使用逻辑或运算符 ||
,来为某些变量赋默认值时,会先将左侧的数据进行布尔运算,如果运算结果为 false
则会返回右侧数据,这时如果左侧数据是 0 或者 '' 时,也会返回右侧数据

尝试一下

1
2
3
4
5
let a = 0 ?? 2
console.log(a) //=> 0

let b = 0 || 2
console.log(b) //=> 2