空值合并运算符
呛再首 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
2
当 name
已定义时,则显示定义值
let name='Tom'
console.log(name??'Lili') // Tom
1
2
2
# 与 || 比较
- || 返回第一个真值
- ?? 返回第一个已定义值
即,||
无法区分false
,0
空字符串以及null/undefined
# 总结
- ?? 被用于为变量分配默认值
- ?? 运算符的优先级非常低,仅略高于 ? 和 =,因此在表达式中使用它时请考虑添加括号
- 如果没有明确添加括号,不能将其与 || 或 && 一起使用