在 TypeScript(以及 JavaScript)中,??
是一种称为空值合并运算符(Nullish Coalescing Operator)的语法。它用于在左操作数为 null
或 undefined
时返回右操作数,否则返回左操作数。这对于处理可能为 null
或 undefined
的值非常有用,尤其是在为变量设置默认值时。
语法:
let result = value1 ?? value2;
示例:
let name: string | null = null;
let defaultName = "Default Name";
let displayName = name ?? defaultName;
console.log(displayName); // 输出 "Default Name"
在这个例子中,由于 name
是 null
,所以 displayName
将被赋值为 defaultName
的值,即 "Default Name"。
与||
的区别:
与逻辑或运算符(||
)不同,空值合并运算符只在左操作数为 null
或 undefined
时才返回右操作数,而逻辑或运算符会在左操作数为假值(例如 null
、undefined
、false
、0
、NaN
或 ""
)时返回右操作数。
let value1 = 0;
let value2 = value1 || 10;
let value3 = value1 ?? 10;
console.log(value2); // 输出 10,因为 0 被视为假值
console.log(value3); // 输出 0,因为 0 不是 null 或 undefined
在这个例子中,value2
被赋值为 10
,因为 value1
是假值,而 value3
被赋值为 0
,因为 value1
不是 null
或 undefined
。