空值合并运算符
空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为null或者undefined时,返回其右侧操作数,否则返回左侧操作数
与逻辑或操作符(||)不同,逻辑或操作符会在左侧操作数为假值时返回右侧操作数。也就是说,如果使用 || 来为某些变量设置默认值,可能会遇到意料之外的行为。比如为假值(例如,’’ 或 0)时。见下面的例子。
const foo = null ?? 'default string';console.log(foo);// expected output: "default string"const baz = 0 ?? 42;console.log(baz);// expected output: 0
示例
使用空值合并操作符
在这个例子中,我们使用空值合并操作符为常量提供默认值,保证常量不为 null 或者 undefined。
const nullValue = null;const emptyText = ""; // 空字符串,是一个假值,Boolean("") === falseconst someNumber = 42;const valA = nullValue ?? "valA 的默认值";const valB = emptyText ?? "valB 的默认值";const valC = someNumber ?? 0;console.log(valA); // "valA 的默认值"console.log(valB); // ""(空字符串虽然是假值,但不是 null 或者 undefined)console.log(valC); // 42
