Js基础知识第十篇 空值合并运算符 ‘ ??‘

本文解析了JavaScript中??运算符如何用于提供默认值和选择非null/undefined值,对比了它与||的区别,强调了优先级和在复杂运算中的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们将值既不是null也不是underfined的表达式称为“已定义的”

空值合并运算符的写法为两个问号 ??

a ?? b   的结果是

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

总结出来就是,如果第一个参数不是 null/underfined ,则 ?? 返回第一个参数,否则返回第二个参数。

1.我们可以用 ?? 来为未定义的变量提供一个默认值

像这里,如果user 是未定义的,那么我们将显示 Anonymous

如果有赋值,则显示所附的值

 2.我们还可以用 ?? 从一系列值里面选出第一个非 null/undefined的值

 与  ||   比较

或运算符 || 可以与  ??  运算符号相同的方式使用,比如在上面代码中,就可以用 || 替换掉  ??

虽然在一些应用上他们可以相互替换,但是  ??  是最近出来的,而他的出现是因为人们对 || 不太满意,他们之间的重要区别就是:

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

也就是说, || 无法区分 false0、空字符串 "" null/undedrfined 。他们都一样---------假值。

但如果在实际中,我们只想在变量的值为 null/underfined  时使用默认值。 

 如果高度 0为有效值,那么在 || 中还会把它替换为默认值因此用 ?? 才能得到正确的结果

优先级

  ?? 运算符优先级仅高于 = ,但低于其他运算符(例如 + *

所以在用到 ??运算符的时候要 考虑加括号

  ?? && 或  || 一起使用

出于安全考虑,JavaScript禁止 上面所述三个运算符一起使用,除非使用括号明确指出优先级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值