ECMAScript 中的空合并运算符 (??) 与逻辑 OR 运算符 (||) 有何不同?

How is the nullish coalescing operator (??) different from the logical OR operator (||) in ECMAScript?

ES2020 引入了 nullish 合并运算符 (??) 如果左操作数为 null 或未定义,则 return 为右操作数。此功能类似于 逻辑或运算符 (||)。例如,下面的表达式 return 结果相同。

const a = undefined
const b = "B"

const orOperator = a || b
const nullishOperator = a ?? b
  
console.log({ orOperator, nullishOperator })

结果:

{
    orOperator:"B",
    nullishOperator:"B"
}

那么 nullish 运算符 有何不同,它的用例是什么?

当且仅当左侧是 falsy 值时,|| 运算符计算右侧。

当且仅当左侧是 nullundefined.[=20= 时,?? 运算符(空合并)计算到右侧] 例如,

false0NaN""(空字符串)被认为是虚假的,但也许您实际上想要这些值。在这种情况下,?? 运算符是正确的运算符。