空值合并运算符

空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为null或者undefined时,返回其右侧操作数,否则返回左侧操作数

逻辑或操作符(||)不同,逻辑或操作符会在左侧操作数为假值时返回右侧操作数。也就是说,如果使用 || 来为某些变量设置默认值,可能会遇到意料之外的行为。比如为假值(例如,’’ 或 0)时。见下面的例子。

  1. const foo = null ?? 'default string';
  2. console.log(foo);
  3. // expected output: "default string"
  4. const baz = 0 ?? 42;
  5. console.log(baz);
  6. // expected output: 0

示例
使用空值合并操作符
在这个例子中,我们使用空值合并操作符为常量提供默认值,保证常量不为 null 或者 undefined。

  1. const nullValue = null;
  2. const emptyText = ""; // 空字符串,是一个假值,Boolean("") === false
  3. const someNumber = 42;
  4. const valA = nullValue ?? "valA 的默认值";
  5. const valB = emptyText ?? "valB 的默认值";
  6. const valC = someNumber ?? 0;
  7. console.log(valA); // "valA 的默认值"
  8. console.log(valB); // ""(空字符串虽然是假值,但不是 null 或者 undefined)
  9. console.log(valC); // 42