ES11中的空值合并运算符

Posted 飞鹰3995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES11中的空值合并运算符相关的知识,希望对你有一定的参考价值。

小编在自己的朋友圈和一些论坛中,都有看到一些前端或者后端被js中判断折磨到起飞,特别是针对空字符串和数字0,在js中,以下6种情况是false

  • undefined

  • null

  • false

  • 0

  • NaN

  • \'\'或""(特别的,当字符串中间全是空格的时候,会判断为true)

为了解决这个痛点,es11中引入空值合并运算符。使用??运算符之前我们为了兼容性好一些,会写这样的代码

const b = 2
const a = b || 5 // 相当于给a一个默认值
console.log(a)  // 2

如果例子中的b的值为以上会判断为false的情况,上述例子中的值就会出现一些问题,比如

// 实例一
const b = 0
const a = b || 5
console.log(a) // 5

// 实例二
const b = false
const a = b || 5
console.log(a) // 5

// 实例三
const b = \'\'
const a = b || 5
console.log(a) // 5

针对实际项目中的需求,对于数字0,我们有的时候只是想输出数字0,而不是数字的默认值,es11这个新特性中,只有值是undefined或者null的时候,才使用默认值,就像这样

// 实例一
const b = 2
const a = b ?? 6
console.log(a) // 2

// 实例二
const b = 0
const a = b ?? 6
console.log(a) // 0

// 实例三
const b = false
const a = b ?? 6
console.log(a) // false

// 实例四
const b = undefined
const a = b ?? 6
console.log(a) // 6
// 实例五
const b = null
const a = b ?? 6        
console.log(a) // 6

大家还可以扫描二维码,关注我的微信公众号,蜗牛全栈

以上是关于ES11中的空值合并运算符的主要内容,如果未能解决你的问题,请参考以下文章

是啥 ?。运营商和我可以在哪里使用? JavaScript中的空值合并运算符[重复]

ES11(2020)可选链操作符和空值合并运算符

ES11(2020)可选链操作符和空值合并运算符

如何修复颤振中的“未处理的异常:用于空值的空检查运算符”错误?

es6:空值合并运算符

用于空值的空值检查运算符