JavaScript空值合并运算符

翻译:疯狂的技术宅

做者:Chris on Codejavascript

原文:https://scotch.io/tutorials/j...前端

未经容许严禁转载java

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

目录面试

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

在ES2020中,咱们得到了在其余语言中( 如 C# 和 PHP)早已可用的功能:空值合并运算符。我一直喜欢这个名字,由于每当我说这个名字时,都会以为本身很聪明。 🤓segmentfault

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

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

img

使用 JavaScript 空值合并运算符

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

null      ?? 'hi'       // 'hi'
undefined ?? 'hey'      // 'hey'

false     ?? 'hola'     // false
0         ?? 'bonjour'  // 0
'first'   ?? 'second'   // first

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

let person  // <-- person is undefined here

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

const isActive = false

isActive ?? true             // false

连接 JavaScript 的空值合并运算符

JavaScript 的空值合并运算符的妙处在于,咱们能够根据须要将其进行屡次连接。多线程

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

使用实例

能够在从外部来源获取数据时使用。好比咱们想从多个地方抓取博客的文章。而后能够肯定哪一个文章将会成为咱们的精选帖子:

// 简化代码。 使用 fetch requires 须要比这更多的代码
const firstBlogPost = await fetch('...')
const secondBlogPost = await fetch('...')
const defaultBlogPost = { title: 'Default Featured Post' }

const featuredBlogPost = firstBlogPost ?? secondBlogPost ?? defaultBlogPost

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

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

若是要消除虚值,能够用 逻辑或运算符||)。

本质上,它与空合并运算符的做用相同,只是它消除了虚值。
  • 空值合并运算符将跳过 nullundefined
  • 逻辑或运算符会跳过 nullundefinedfalse
false ?? 'hello'    // false
false || 'hello'    // 'hola'

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

浏览器支持

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

img

总结

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

173382ede7319973.gif


本文首发微信公众号:前端先锋

欢迎扫描二维码关注公众号,天天都给你推送新鲜的前端技术文章

欢迎扫描二维码关注公众号,天天都给你推送新鲜的前端技术文章

欢迎继续阅读本专栏其它高赞文章:


相关文章
相关标签/搜索