空值合并运算符

6/27/2020 javascript技巧es6+

# 空值合并运算符'??'

当第一个参数不是 null/undefined,则 ?? 返回第一个参数,否则返回第二个参数
1

# 用法

let result=a??b

let result=(a !== null && a !== undefined) ? a : b;
1

是等价的,结果都是

  • 如果 a 是已定义的,则结果是 a
  • 如果 a 不是已定义的,则结果是 b

# 使用场景

为未定义的变量提供一个默认值

例如 name 未定义,则显示Lili

let name
console.log(name??'Lili') // Lili
1
2

name已定义时,则显示定义值

let name='Tom'
console.log(name??'Lili') // Tom
1
2

# 与 || 比较

  • || 返回第一个真值
  • ?? 返回第一个已定义值

即,|| 无法区分false,0空字符串以及null/undefined

# 总结

  • ?? 被用于为变量分配默认值
  • ?? 运算符的优先级非常低,仅略高于 ? 和 =,因此在表达式中使用它时请考虑添加括号
  • 如果没有明确添加括号,不能将其与 || 或 && 一起使用
Last Updated: 12/30/2022, 2:33:12 PM