JavaScript 空值合并运算符

现实开发中,经常会有判断变量是否被定义的需求,然后根据它进行相应的操作:
let visitor1 = 'Kylin'console.log(visitor1 ?? '访客') // Kylinlet visitor2console.log(visitor2 ?? '访客') // 访客如您所见,代码中 "??" 就是空值合并运算符 。它所表达的意思是,当一个值既不是 null 也不是 undefined 时,就将其称为 "已定义的" 。例如:a ?? b 的结果:

  • 如果 a 是已定义的,结果就为 a,
  • 如果 a 不是已定义的,结果就为 b 。
空值合并也支持从一些列值中选出第一个非 null/undefined 的值:
let firstName = nulllet lastName = nullconsole.log(firstName ?? lastName ?? '访客') // 访客"??" 运算符与 "||" 运算符有些区别,"||" 运算符返回的是第一个真值,而 "??" 运算符返回的是第一个 "已定义的" 值 。
这说明 "||" 运算符无法区分 "0, false, "", null, undefined":
let width = 0console.log(width || 100) // 100let width = 0console.log(width ?? 100) // 0JAVAScript 禁止 "??" 与 "||" 和 "&&" 混用,除非用 "括号" 明确提升它们的优先级,否则会出现语法错误 。

【JavaScript 空值合并运算符】


    推荐阅读