JS 双问号

在 JavaScript 中,双问号 ?? 是一个逻辑运算符,用于确定一个变量或表达式是否为 null 或 undefined。这个运算符在处理可选值时非常实用,可以简洁地提供默认值。
使用场景
在开发中,经常会遇到需要为变量赋默认值的情况。传统的做法通常是使用条件语句来检查变量是否为 null 或 undefined,然后进行赋值。但是使用双问号运算符可以更加简洁地实现相同的功能。
下面我们来看一个示例:
let x = null;
let y = x ?? "默认值";
console.log(y); // 输出:"默认值"
在这个示例中,如果 x 的值为 null 或 undefined,则 y 被赋值为右侧的默认值,否则 y 被赋值为 x 的值。
与 || 运算符的区别
有些人可能会觉得双问号 ?? 运算符和逻辑或 || 运算符有些相似,因为它们都可以用来提供默认值。但实际上它们之间有一个很重要的区别。
|| 运算符会在左侧的值为假值(如 null、undefined、false、0、NaN 或空字符串 "")时返回右侧的值,而 ?? 运算符只会在左侧的值为 null 或 undefined 时返回右侧的值。
让我们来看一个区别的示例:
let a = 0;
let b = a || 5;
let c = a ?? 5;
console.log(b); // 输出:5
console.log(c); // 输出:0
在这个示例中,由于 a 的值为 0,所以 b 被赋值为右侧的 5。但使用双问号运算符 ?? 时,只有在 a 的值为 null 或 undefined 时才会返回右侧的 5,否则会返回 a 的真实值。
嵌套使用
双问号运算符可以与其他运算符进行嵌套使用,以实现更复杂的逻辑。
let a = null;
let b = undefined;
let c = 0;
let result = a ?? b ?? c ?? "默认值";
console.log(result); // 输出:"默认值"
在这个示例中,使用了多个双问号运算符来检查多个变量,只要其中有一个变量的值为 null 或 undefined,就会返回最后一个值 "默认值"。
总结
双问号 ?? 运算符是 JavaScript 中一个非常实用的逻辑运算符,用于提供默认值并简化代码。它与逻辑或 || 运算符有所不同,只会在左侧的值为 null 或 undefined 时返回右侧的值。
使用双问号运算符可以使代码更加简洁和清晰,减少不必要的条件语句,提高代码的可读性。
当你需要为变量赋默认值时,不妨考虑使用双问号 ?? 运算符,看看它能否帮助你更有效地处理可选值的情况。
极客笔记