<返回更多

JavaScript 空值合并运算符

2022-05-11    前端客栈
加入收藏

现实开发中,经常会有判断变量是否被定义的需求,然后根据它进行相应的操作:

let visitor1 = 'Kylin'
console.log(visitor1 ?? '访客') // Kylin

let visitor2
console.log(visitor2 ?? '访客') // 访客

如您所见,代码中 "??" 就是空值合并运算符。它所表达的意思是,当一个值既不是 null 也不是 undefined 时,就将其称为 "已定义的"。例如:a ?? b 的结果:

  • 如果 a 是已定义的,结果就为 a,
  • 如果 a 不是已定义的,结果就为 b。

空值合并也支持从一些列值中选出第一个非 null/undefined 的值:

let firstName = null
let lastName = null
console.log(firstName ?? lastName ?? '访客') // 访客

"??" 运算符与 "||" 运算符有些区别,"||" 运算符返回的是第一个真值,而 "??" 运算符返回的是第一个 "已定义的" 值。

这说明 "||" 运算符无法区分 "0, false, "", null, undefined":

let width = 0
console.log(width || 100) // 100

let width = 0
console.log(width ?? 100) // 0

JAVAScript 禁止 "??" 与 "||" 和 "&&" 混用,除非用 "括号" 明确提升它们的优先级,否则会出现语法错误。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>