JS | 两个“??”代表什么

4,311 阅读2分钟

对于两个问号 "??" 的解释:

在 JavaScript 中,两个问号 "??" 是一个称为 "Nullish Coalescing Operator"(空值合并运算符)的特殊运算符。它用于处理变量为 null 或 undefined 时的情况。

当使用两个问号运算符时,它会返回第一个非空(既不是 null 也不是 undefined)的操作数。这与使用单个竖线符号 "|" 或双竖线符号 "||" 的逻辑或操作符不同,逻辑或操作符在遇到 falsy 值(例如空字符串、数字 0 等)时也会返回第一个非空的操作数。

下面是一个使用两个问号运算符的示例:

const value1 = null;
const value2 = undefined;
const value3 = 'Hello';
const value4 = '';

const result1 = value1 ?? 'Default Value'; // 'Default Value'
const result2 = value2 ?? 'Default Value'; // 'Default Value'
const result3 = value3 ?? 'Default Value'; // 'Hello'
const result4 = value4 ?? 'Default Value'; // ''

在上面的示例中,result1 和 result2 都返回了 'Default Value',因为 value1 和 value2 都是 null 或 undefined。而 result3 返回了 'Hello',因为 value3 不是 null 或 undefined。最后,result4 返回了空字符串 '',因为空字符串不是 null 或 undefined。

通过使用两个问号运算符,可以方便地为可能为 null 或 undefined 的变量提供默认值,以避免出现错误或异常情况。

对于falsy值的解释:

Falsy 值指的是在条件表达式中被视为假(false)的值。在 JavaScript 中,以下值被视为 falsy 值:

false:布尔值 false。 0:数值 0。 '':空字符串。 null:表示空值的特殊关键字。 undefined:表示未定义的特殊关键字。 NaN:表示非数值(Not-a-Number)的特殊值。

这些值在条件判断中被视为假,当它们作为条件表达式的结果时,会被认为是 false。例如,在 if 语句中,如果条件的结果是 falsy 值,那么相关的代码块将不会执行。

下面是一个示例,演示了 JavaScript 中的 falsy 值的行为:

if (false) {
  console.log("This will not be executed");
}

if (0) {
  console.log("This will not be executed");
}

if ('') {
  console.log("This will not be executed");
}

if (null) {
  console.log("This will not be executed");
}

if (undefined) {
  console.log("This will not be executed");
}

if (NaN) {
  console.log("This will not be executed");
}

在上面的示例中,所有的 if 语句都不会执行,因为它们的条件结果都是 falsy 值。

需要注意的是,除了上述列出的 falsy 值之外,其他所有值都被视为 truthy 值,包括非空字符串、非零数字、空数组、空对象等。