首先,|| 和 ?? 都是合并运算符,但是 ||
是一个布尔逻辑运算符,左侧的数据都会转换成布尔值。如(0
, ''
, NaN
, null
, undefined
)都不会被返回。这导致如果你使用0
,''
或NaN
作为有效值,就有问题。
直接上代码,简单清晰。
const count1 = 0;
const text1 = "";
const c1 = count1 || 1;
const t1 = text1 || "你好!";
console.log(c1); // 1,而不是 0
console.log(t1); // "你好!",而不是 ""
const count2 = 0;
const text2 = "";
const c2 = count2 ?? 1;
const t2 = text2 ?? "你好!";
console.log(c2); // 0
console.log(t2); // ""