在 TypeScript 和 JavaScript 中,?? 和 || 都是用于处理默认值的运算符,但它们的行为略有不同。
- 用途:用于处理 null 或 undefined 的情况。
- 行为:如果左侧操作数是 null 或 undefined,则返回右侧操作数;否则返回左侧操作数。
const value = someVariable ?? 'default value';
- 用途:用于处理假值(falsy values),包括
false
、0
、''
(空字符串)、null
、undefined
和NaN
。 - 行为:如果左侧操作数是任何假值,则返回右侧操作数;否则返回左侧操作数。
??
只处理null
和undefined
,而||
处理所有假值。- 使用
??
可以避免误将0
、false
或''
视为需要替换的值。
const nullValue = null;
const undefinedValue = undefined;
const falseValue = false;
const zeroValue = 0;
const emptyStringValue = '';
console.log(nullValue ?? 'default'); // 输出: 'default'
console.log(undefinedValue ?? 'default'); // 输出: 'default'
console.log(falseValue ?? 'default'); // 输出: false
console.log(zeroValue ?? 'default'); // 输出: 0
console.log(emptyStringValue ?? 'default'); // 输出: ''
console.log(nullValue || 'default'); // 输出: 'default'
console.log(undefinedValue || 'default'); // 输出: 'default'
console.log(falseValue || 'default'); // 输出: 'default'
console.log(zeroValue || 'default'); // 输出: 'default'
console.log(emptyStringValue || 'default'); // 输出: 'default'