详解:ECMAScript 2021 可选链、null 策略运算符的多种展示方式

随着现代 Web 应用的不断发展,前端开发工作越来越需要处理复杂的数据结构,同时在使用中也会遇到数据缺失或错误的情况。为了更好地处理这些情况,ECMAScript 2021 引入了可选链和 null 策略运算符,大大简化了我们的代码。

可选链

可选链是一种用于安全和优雅地处理可能不存在的值或属性的新特性。以前,在访问深度嵌套的对象或数组时,我们必须多次进行 null 或 undefined 的检查,否则就会引起代码执行错误。如:

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

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

可选链操作符 ?. 的出现使得我们可以更加简洁地访问对象的属性。在上述例子中,我们可以使用可选链操作符改写:

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

当对象属性存在时,可选链操作符 ?. 将以正常方式访问该属性。但是,当属性不存在时,它将不再尝试访问该属性,而是返回 undefined。可选链操作符还可以和函数调用和数组访问一起使用。

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

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

注意,可选链操作符只会防止访问不存在的属性或方法,但是它不会防止在访问属性值时出现错误,例如 null 的属性。此时,可以使用 null 策略运算符。

null 策略运算符

当我们要访问对象的某个属性或调用某个方法时,这个对象可能为空或不存在,此时使用运算符 ?? 可以避免代码出错导致程序终止。

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

null 策略运算符 ?? 表示如果前面的表达式结果为 nullundefined,则返回后面的默认值。在上述例子中,当对象 obj 为空或不存在时,表达式将返回默认值 "default"

null 策略运算符还可以与可选链操作符 ?. 一起使用,简化代码,增加可读性。

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

多种展示方式

除了上述示例中的展示方式,可选链和 null 策略运算符还可以有多种展示方式,以下是一些示例:

1. 在 React 中使用

React 组件中可能会接收到 undefined、null 或者还未赋值的 props,如果在访问这些 props 时不加以处理,往往会导致程序出错或渲染错误。使用可选链和 null 策略运算符可以有效地避免这些问题。

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

2. 更清晰的代码

在一些需要访问深度嵌套对象或数组的代码中,使用可选链和 null 策略运算符可以让代码更加简洁清晰。

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

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

3. 在 Electron 中使用

Electron 中的某些 API 可能返回一个 undefined 的变量,使用可选链和 null 策略运算符可以让代码更具可读性。

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

总结

可选链和 null 策略运算符是 ECMAScript 2021 中非常实用、方便的新特性,避免了我们在代码中频繁使用 null 和 undefined 的判断,使代码更加简洁、清晰、易读。尤其对于处理复杂数据结构的 Web 应用和 Electron 中的使用,具有极大的指导意义。

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


猜你喜欢

  • 使用 ES8 的 async/await 解决 jQuery 的回调问题

    使用 ES8 的 async/await 解决 jQuery 的回调问题 在前端开发中,由于网络请求需要等待服务器的响应,我们经常需要使用回调函数来处理异步代码。而在 jQuery 中,我们可以使用 ...

    9 个月前
  • 使用 koa2+vue2 搭建 web 应用

    Web 应用开发需要一种能够有效处理请求和响应的工具,而 Koa 是一个基于 Node.js 平台的新型 Web 开发框架。Koa2 是其最新版本,它提供了强大的异步处理能力和易于扩展的中间件机制。

    9 个月前
  • Flexbox 知识拓展 ——Flexbox 新特性探究

    Flexbox 是一种强大的 CSS 布局模式,它对于构建灵活的、自适应的布局非常重要。虽然 Flexbox 已经存在了很多年了,但是随着 Web 技术的发展,它一直在不断地更新与完善,下面我们将会探...

    9 个月前
  • 如何解决 Webpack 打包后出现 “undefined is not a function” 错误

    问题描述 在使用 Webpack 进行打包的过程中,有时候会出现 “undefined is not a function” 的错误提示信息。这种类型的错误提示非常抽象,让人很难发现错误的根本原因。

    9 个月前
  • MongoDB 存在的一个查询缓存 bug,解决方案来了

    问题描述 在使用 MongoDB 进行查询时,我们想要利用其内置的查询缓存机制来加速查询的速度。但是存在一个 bug,即当查询语句中使用具有不同顺序的 $in 或 $nin 进行查询时,缓存会失效,每...

    9 个月前
  • 如何在 ESLint 中配置 parserOptions,避免语法问题

    ESLint 是前端开发中非常常用的静态代码分析工具,可以帮助开发者更好地避免代码中的语法问题和潜在的错误。在使用 ESLint 时,配置 parserOptions 是非常重要的一步,因为这会影响到...

    9 个月前
  • 如何使用 Material Design 风格下的 CheckBox 控件

    在前端开发中,Material Design 是一个流行且颇具风格的设计规范。它的特点是注重平面化设计,形象生动,有利于提高应用程序的用户体验。CheckBox 控件是 Material Design...

    9 个月前
  • ES6 中的 Reflect 对象详解

    在 ES6 中,一个新的对象 Reflect 被引入,这个对象提供了一组类静态方法,这些方法可以用来代替一些语言内部的方法,比如 Object 对象上的方法。本篇文章将针对 Reflect 对象进行详...

    9 个月前
  • ES10 中字符串扩展 (String.prototype.trimStart() 和 String.prototype.trimEnd() ) 的运用

    在 ES10 中,JavaScript 字符串对象新增了两个方法:String.prototype.trimStart() 和 String.prototype.trimEnd(),用于去除字符串的前...

    9 个月前
  • 在 ES9 中使用可选的 catch 绑定来减少捕获异常时的变复杂度

    在 ES9 中使用可选的 catch 绑定来减少捕获异常时的变复杂度 当程序出现异常时,程序员需要捕捉这些异常并采取相应的措施来处理这些异常。在ES9中,可以使用可选的 catch 绑定来减少捕获异常...

    9 个月前
  • Mocha 和 Karma 的区别和联系

    Mocha 和 Karma 的区别和联系 前端开发中,测试是至关重要的一环。而 Mocha 和 Karma 都是目前比较流行的 JavaScript 测试框架。但是,它们的使用场景和功能有所不同。

    9 个月前
  • AngularJS 技巧之日期上传

    日期上传是常见的前端需求之一,而 AngularJS 内置的指令和过滤器可以轻松处理日期格式,提高页面效率。本文将会介绍有关 AngularJS 的日期上传技巧,包括输入控件、数据绑定和格式化方法。

    9 个月前
  • 如何在 Deno 中使用 less 和 scss

    前言 Deno是一个安全、稳定、具有现代语言特性的JavaScript(TypeScript)运行时。它已经被越来越多的人使用,并且它的生态系统日益壮大,从而吸引了很多前端开发人员的关注。

    9 个月前
  • 使用 LESS 编写响应式页面的技巧

    LESS 是一种 CSS 预处理器,它提供了许多有用的功能,可以帮助前端开发人员更容易地编写样式表,并且可以更加灵活地控制页面的样式。在本文中,我们将介绍如何使用 LESS 编写响应式页面的技巧。

    9 个月前
  • PM2 在多机房分布式部署下的应用与实践

    前端作为一个越来越重要的方向,往往需要处理多机房分布式部署的问题。而 PM2 作为 Node.js 进程管理器,其在多机房分布式部署下的应用非常重要。本文将会介绍 PM2 在多机房分布式部署中的应用与...

    9 个月前
  • Socket.io 与 Redis 配合实现多个服务之间的实时通信

    前言 实时通信对于现代 Web 应用来说越来越重要。在许多情况下,应用程序需要直接的持久连接以进行实时数据交换。这种虽然很流畅但确实很复杂,但可以通过使用 Socket.io 和 Redis 这两个流...

    9 个月前
  • 使用 ES7 的 Array.prototype.fill() 方法为数组元素添加默认值

    随着前端技术的快速发展,JavaScript 也在一直升级,ES7 也是我们常用的 JavaScript 版本之一。在 ES7 中,我们可以使用 Array.prototype.fill() 方法为数...

    9 个月前
  • ES8 中的异步迭代器 'async-iterator' 详解

    随着前端应用程序的不断发展,异步操作越来越普遍。ES8 的新增特性——异步迭代器(async-iterator)成为了解决这一问题的良好解决方案。本文将详细介绍 ES8 中的异步迭代器。

    9 个月前
  • 使用 A11y.css 优化网站无障碍性

    在现代社会中,我们的生活离不开网络,越来越多的人都习惯通过浏览器和网站获取信息、交流和娱乐。然而,有不少人由于生理和心理原因,需要使用辅助技术才能浏览网页,如盲人需要阅读器,视力受损者需要放大器等,这...

    9 个月前
  • Tailwind 中如何处理图像尺寸和位置?

    Tailwind 是当前最流行的 CSS 框架之一,它采用了类似于编程的方式来编写 CSS 样式,可以大大提升前端开发的效率。虽然 Tailwind 的主要功能是处理样式,但在实际开发中,图像处理也不...

    9 个月前

相关推荐

    暂无文章