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 值时,||
运算符计算右侧。
当且仅当左侧是 null
或 undefined
.[=20= 时,??
运算符(空合并)计算到右侧]
例如,
false
、0
、NaN
、""
(空字符串)被认为是虚假的,但也许您实际上想要这些值。在这种情况下,??
运算符是正确的运算符。
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 值时,||
运算符计算右侧。
当且仅当左侧是 null
或 undefined
.[=20= 时,??
运算符(空合并)计算到右侧]
例如,
false
、0
、NaN
、""
(空字符串)被认为是虚假的,但也许您实际上想要这些值。在这种情况下,??
运算符是正确的运算符。