详解JavaScript的空值合并运算符(??)


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章带大家了解一下JavaScript的空值合并运算符(??)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

今年ECMAScript 2020(ES2020)将发布!自 2015 年 ECMAScript 2015(ES6)发布以来,我们每年都对 JavaScript 语言进行更新。

目录

  • 使用 JavaScript 空值合并运算符
  • 使用实例
  • 空值合并运算符与逻辑或(||
  • 浏览器支持
  • 总结

在ES2020中,我们获得了在其他语言中( 如 C# 和 PHP)早已可用的功能:空值合并运算符。我一直喜欢这个名字,因为每当我说这个名字时,都会觉得自己很聪明。

空值合并运算符将会遍历列表,并返回第一个不是 null 或 undefined 的值。

重要的是要注意,空值合并运算符仅查找 nullnull 值。空值合并运算符接受虚值(Falsy values)。

使用 JavaScript 空值合并运算符(??)

让我们看一些例子。请记住,JavaScript 的空值合并运算符将遵循 ?? 链,直到找到非空或未定义的对象。如果找到 false,它将返回该值。

1

2

3

4

5

6

null      ?? 'hi'       // 'hi'

undefined ?? 'hey'      // 'hey'

 

false     ?? 'hola'     // false

0         ?? 'bonjour'  // 0

'first'   ?? 'second'   // first

在下面的例子中,我们在变量中存储了一些值:

1

2

3

4

5

6

7

let person  // <-- person is undefined here

 

person ?? { name: 'chris' }       // { name: 'chris' }

 

const isActive = false

 

isActive ?? true             // false

链接 JavaScript 的空值合并运算符

JavaScript 的空值合并运算符的妙处在于,我们可以根据需要将其进行多次链接。

1

2

null ?? undefined ?? false ?? 'hello'     // false

null ?? '' ?? 'hello'                     // ''

使用实例

可以在从外部来源获取数据时使用。比如我们想从多个地方抓取博客的文章。然后可以确定哪个文章将会成为我们的精选帖子:

1

2

3

4

5

6

// 简化代码。 使用 fetch requires 需要比这更多的代码

const firstBlogPost = await fetch('...')

const secondBlogPost = await fetch('...')

const defaultBlogPost = { title: 'Default Featured Post' }

 

const featuredBlogPost = firstBlogPost ?? secondBlogPost ?? defaultBlogPost

如果不确定某些值是否存在,上面是设置默认值的好方法。

空合并运算符与逻辑或(||

如果要消除虚值,可以用 逻辑或运算符 (||)。

本质上,它与空合并运算符的作用相同,只是它消除了虚值。
  • 空值合并运算符将跳过 nullundefined
  • 逻辑或运算符会跳过 nullundefinedfalse

1

2

false ?? 'hello'    // false

false || 'hello'    // 'hola'

如果你不想用要虚值,可以使用 ||。如果只想检查是否为 nullundefined,就用 ??

浏览器支持

在撰写本文时,最新版本的 Chrome、Firefox、Edge 和 Safari 可以使用空值合并运算符。

1.png

总结

空值合并运算符是该 JavaScript 语言不错的补充。拥有更多检查值的选择并没有什么坏处。

英文原文地址:https://scotch.io/tutorials/javascripts-null-coalescing-operator

作者:Chris on Code

译文地址:https://segmentfault.com/a/1190000023577464

更多编程相关知识,请访问:编程入门!!

以上就是详解JavaScript的空值合并运算符(??)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

html5 canvas绘图之drawimage() 方法的详细介绍(代码示例)

分享 10 个提高 javascript 技能的测验问答

5个有用的css函数(分享)

javascript运行没有效果是怎么回事?

javascript的不同函数中可以使用相同的变量名吗?

一起看看 php javascript 语法对照

javascript怎么将摄氏度转华氏度

360如何打开javascript

date对象常用的封装方法及遇到的问题解决

javascript用什么分割成数组

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...