ECMAScript 2021 (ES12) 中的 Nullish Coalescing 运算符及其使用场景

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

在 ECMAScript 2021 中,新增了一个 Nullish Coalescing 运算符,即 ??。这个运算符主要用来判断一个值是否为 null 或 undefined,如果是的话,就使用另一个给定的默认值代替它。

Nullish Coalescing 运算符的使用

下面是一个简单的例子,展示了如何使用 Nullish Coalescing 运算符:

----- --- - ---- -- ------ -------
----------------- -- ------ ------

在上述代码中,foo 的值为 null,因此使用了 "hello world" 作为默认值。

如果去掉 Nullish Coalescing 运算符,可以得到以下代码:

----- --- - ---- -- ------ -------
----------------- -- ------ ------

在上面的代码中,使用了逻辑或运算符 ||,这样的话,如果 foo 的值为 falsy,就会使用右侧的默认值。但是,由于空字符串、0false 等值在逻辑运算时会被当作 falsy 值,因此无法区分 nullundefined

Nullish Coalescing 运算符准确地区分了 null 或 undefined 和其他 falsy 值,因此可以更精确地判断变量的值。

Nullish Coalescing 运算符与逻辑或运算符的区别

虽然 Nullish Coalescing 运算符看起来很像逻辑或运算符,但是它们有一个很重要的区别。当使用逻辑或运算符时,只要左侧运算结果为 falsy,就会返回右侧的默认值。但是使用 Nullish Coalescing 运算符时,只有当左侧运算结果为 null 或 undefined 时,才会返回右侧的默认值。

下面是一个例子,用来展示区别:

----- - - ----------
----- - - -----
----- - - --

----- --- - - -- ------ -------
----- --- - - -- ------ -------
----- --- - - -- ------ -------

----- ---------- - - -- ------ -------
----- ---------- - - -- ------ -------
----- ---------- - - -- ------ -------

----------------- -- ------ ------
----------------- -- ------ ------
----------------- -- ------ ------

------------------------ -- ------ ------
------------------------ -- ------ ------
------------------------ -- -

在上述代码中,变量 ab 的值分别为 undefinednull,变量 c 的值为 0。使用逻辑或运算符时,foobar 都返回默认值 "hello world",因为它们的值为 falsy。而使用 Nullish Coalescing 运算符时,只有 bazNullish 返回变量 c 的值 0,其他变量均返回默认值 "hello world"

Nullish Coalescing 运算符的使用场景

Nullish Coalescing 运算符常常用于判断变量值是否为 null 或 undefined,从而决定是否使用默认值。

例如,当使用 API 请求获取数据时,可能会得到一个空值。使用 Nullish Coalescing 运算符时,就可以使用一个默认值替代空值,从而避免出现 bug:

----- ---- - ----------- -- - -------- ------------- --

在上述代码中,如果 fetchData() 返回 null 或 undefined,就会使用默认值 { message: "请求出错,请稍后再试。" }

另一个使用场景是在不使用默认值的情况下,获得正确的结果。例如:

----- - - ---
----- - - ---

----- ------ - - -- --
-------------------- -- --

在上述代码中,使用 Nullish Coalescing 运算符时,返回了变量 x 的值 "",因为它不是 null 或 undefined。

结论

Nullish Coalescing 运算符可以帮助开发者更精确地判断变量值是否为 null 或 undefined,并使用默认值代替空值。它比逻辑或运算符更加准确,避免了空字符串、0false 等值被当作 falsy 值的问题。在 API 请求、函数返回值等场景下,Nullish Coalescing 运算符可以帮助我们避免出现 bug,提高代码质量。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6719becd3af17e55073249e4


猜你喜欢

  • 如何在 Angular 项目中使用 ESLint Linter

    ESLint 是一个流行的 JavaScript Linter,可以帮助开发人员发现并修复代码中的问题。如果您在 Angular 项目中使用 ESLint,可以确保您的代码质量更好,并且符合最佳实践,...

    18 天前
  • chai.js 的测试断言库在 Node.js 应用中的使用方法

    简介 在前端项目中,测试是一个不可或缺的组成部分,负责确保应用程序的正确性和稳定性。chai.js 是一个流行的 JavaScript 测试断言库,可帮助开发人员编写自动化测试用例。

    18 天前
  • 在 Node.js 中处理未处理的 Promise 拒绝

    在 Node.js 中处理未处理的 Promise 拒绝 Promise 是一种异步操作的抽象,它使得异步代码更加易于理解和组织。当 Promise 被 rejected 时,处理该拒绝状态刻不容缓,...

    18 天前
  • 响应式设计下的 CSS3 动画优化技巧

    在现代互联网上,越来越多的用户使用移动设备访问网页。因此,响应式设计变得越来越重要。响应式设计可以使网站自适应不同的屏幕大小和设备类型,从而提供更好的用户体验。然而,在实现响应式设计时,我们通常需要添...

    18 天前
  • 初学者必知的 Kubernetes 部署流程详解

    前言 在现代化的企业软件开发中,Kubernetes 作为一种容器化部署和管理平台,变得越来越流行。Kubernetes 不仅能实现轻松部署维护您的应用程序,而且它还可以扩展,让您的应用程序满足业务需...

    18 天前
  • 如何使用 TypeScript 开发 Angular 应用程序?

    Angular 是目前最流行的前端框架之一,它具有强大的功能和易于开发维护的特点,而 TypeScript 则是近年来备受关注的静态类型语言。结合 Angular 和 TypeScript 可以带来更...

    18 天前
  • 构建易于维护的 AngularJS SPA 应用框架

    在现代 Web 开发中,单页应用程序 (Single Page Application,简称 SPA) 变得越来越流行。 SPA 是一种基于 JavaScript、 HTML 和 CSS 创建更流畅、...

    18 天前
  • 如何处理 GraphQL 中的复杂查询

    GraphQL 是一种先进的查询语言,它有助于管理前端应用程序和后端服务器之间的数据交互。它的优点之一是可以设计和预测适合应用程序要求的数据结构。在 GraphQL 中,复杂查询是很常见的,因为它可以...

    18 天前
  • Custom Elements 如何使用 Polyfill 在旧版浏览器中生效?

    Custom Elements(自定义元素)是 Web Components 的一部分,它允许开发者创建自己的 HTML 标签并为其添加行为。然而,Custom Elements 在一些旧版浏览器中并...

    18 天前
  • Serverless 架构应用中的内存泄露排除方法

    随着 Serverless 技术的发展,越来越多的应用开始采用 Serverless 架构来部署和运行应用。Serverless 架构的好处是可以免去运维的烦恼,同时也能够提高应用的可扩展性和可靠性。

    18 天前
  • 在 Mocha 中使用 Test Data Bot 进行测试数据生成

    作为前端开发者,编写单元测试是保证代码质量的重要手段之一。而测试数据的生成是单元测试的重要组成部分。在传统的测试数据生成中,我们往往使用一个独立的数据文件或是手工创建数据对象来进行测试。

    18 天前
  • 如何在许多平台上实现无障碍性?

    随着数字化时代的到来,互联网已成为我们生活中不可或缺的一部分,人们越来越依赖在线服务来获取信息和进行交流。然而,在现实生活中,我们发现许多人面临着无法完全享受在线服务的问题,这可能与他们的身体状态有关...

    18 天前
  • 开发出高性能 PWA 的几个关键

    近年来,PWA(Progressive Web App)成为了前端开发的热门话题之一。PWA 可以使 Web 应用具备类似 Native 应用的体验,拥有快速加载、离线可用、响应式、安全性高等优点,因...

    18 天前
  • React+ Redux 实现数据流来避免锁死

    在前端开发中,我们经常面临着一个难题:如何在不妨碍应用性能的同时,有效地处理数据流。对于复杂的应用程序,我们需要确保数据在组件之间流动的同时,不会出现死锁的情况,否则就会导致应用程序的崩溃。

    18 天前
  • Headless CMS 自动构建和部署的最佳实践

    当今的web应用通常十分复杂,通常需要多个技术栈和工具来实现。其中,内容管理系统(CMS)是其中一个必要的组件,它负责管理网站或应用程序的内容和数据。Headless CMS是一种新型的CMS,与传统...

    18 天前
  • MongoDB 安全设置的检查方法

    简介 MongoDB 是一个开源的 NoSQL 数据库,被广泛应用于前端开发中。但是,MongoDB 的默认配置并不足以保证安全性,因此需要进行一些安全设置。 本文将介绍 MongoDB 安全设置的检...

    18 天前
  • Koa 项目中使用 PM2 进行进程管理的技巧与实践

    在开发 Koa 项目时,进程管理是非常重要的一环。为了提高应用程序的稳定性和可用性,我们需要对进程进行管理和监控。PM2 就是一个非常好用的进程管理工具,可以让我们更加容易地管理和监控进程,并且可以通...

    18 天前
  • 如何降低 ES9 的内存占用

    随着前端项目越来越复杂,ES9 作为前端开发的脚本语言,占用的内存也越来越高。为了提高项目的性能和用户体验,降低 ES9 的内存占用是必不可少的。 本文将介绍几种降低 ES9 内存占用的技巧,包括使用...

    18 天前
  • Material Design 如何应用于图片分享应用中

    在现代应用程序设计中,Material Design 已经成为一种流行的设计语言。它具有可扩展性和可适应性,可以应用于各种应用程序设计,包括图片分享应用。本文将介绍 Material Design 如...

    18 天前
  • Mongoose 在 update 操作中使用 $set 操作符的好处

    在使用 Node.js 开发 Web 应用程序时,Mongoose 是 Node.js 的一种优秀的 ORM(Object Relational Mapping)框架,它为我们提供了一种更简单的方式来...

    18 天前

相关推荐

    暂无文章