在 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
。