?? 和 || 运算符的区别
|| 逻辑或运算符
在处理空值或者默认值时会遵循 JavaScript 的类型转换规则。如果左侧的表达式结果为假值(如false
、0
、空字符串""
、null
、undefined
、NaN
),则返回右侧的值。
const x = null; const y = x || "default"; console.log(y); // "default"
?? 运算符
专门用于处理null
或undefined
的情况,不会受到 JavaScript 的类型转换规则的影响。如果左侧的值为null
或undefined
,则返回右侧的值。
const x = 0; const y = x ?? 42; const z = x || 42; console.log(y); // 0 console.log(z); // 42
总结
因此,??
更适合用于处理空值或者默认值,而||
则更适合用于一般的逻辑判断。