如何使用 ECMAScript 2016 的可选链接操作符?

在前端开发中,我们经常要处理深层嵌套的数据结构,在访问嵌套的属性或方法时,如果存在未定义或 null 的情况,就会出现错误和异常。这时,我们需要在代码中增加大量的判断语句,增加了代码的复杂度和可读性。为了解决这个问题,ECMAScript 2016 中引入了可选链接操作符(Optional Chaining Operator),可以让我们更方便地访问嵌套对象的属性和方法。

可选链接操作符的语法

可选链接操作符是一种新的语法结构,用来访问嵌套对象的属性和方法,其语法格式如下:

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

其中,obj 是一个对象,prop 是该对象的属性名,expr 是一个表达式,func 是一个函数,args 是函数参数。可选链接操作符 ?. 表示如果 obj 为 null 或 undefined,则返回 undefined,否则继续访问 prop[expr] 属性,或者调用 func 函数。

可选链接操作符的应用举例

下面,我们用具体的代码来演示可选链接操作符的应用场景。

访问对象属性

假设有一个 user 对象,它包含了一个 info 子对象,这个 info 子对象包含了一个 name 的属性值。我们想要访问 user.info.name 属性值,但是 useruser.info 都有可能是 null 或 undefined,这时就可以使用可选链接操作符 ?.

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

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

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

在上面的代码中,我们使用可选链接操作符 ?. 来访问 user.info.name 属性值。当 useruser.info 为 null 或 undefined 时,返回 undefined,否则返回 user.info.name 属性值。

访问对象属性值

除了访问属性,可选链接操作符 ?. 还可以访问对象属性值。假设有一个 colors 对象,它包含了三个属性值:redgreenblue。我们想要访问 colors['green'] 属性值,但是 colors 有可能是 null 或 undefined,这时就可以使用可选链接操作符 ?.

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

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

在上面的代码中,我们使用可选链接操作符 ?. 来访问 colors['green'] 属性值。当 colors 为 null 或 undefined 时,返回 undefined,否则返回 colors['green'] 属性值。

调用对象方法

在对象方法调用时,如果对象为 null 或 undefined,就会出现 TypeError 异常。为了避免这个异常,可选链接操作符 ?. 可以判断对象是否为 null 或 undefined,如果是,则直接返回 undefined。假设有一个 drawer 对象,它包含了一个 open 和一个 close 方法,我们想要调用 drawer.close() 方法,但是 drawer 有可能是 null 或 undefined,这时就可以使用可选链接操作符 ?.

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

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

在上面的代码中,我们使用可选链接操作符 ?. 来调用 drawer.close() 方法。当 drawerdrawer.close 为 null 或 undefined 时,返回 undefined,否则调用 drawer.close() 方法。

总结

可选链接操作符 ?. 是 ECMAScript 2016 的一项新语法,它可以在访问或调用嵌套对象的属性或方法时,避免出现 null 或 undefined 的异常,减少代码的复杂度和可读性。在使用可选链接操作符时,需要注意应用场景,避免不必要的使用,增加代码的可维护性。

希望这篇文章对大家学习 ECMAScript 2016 中的可选链接操作符有所帮助。

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


猜你喜欢

  • Material Design 中使用 RecyclerView 制作横向滚动的卡片视图

    在 Material Design 中,横向滚动的卡片视图是一种常见的设计元素。在前端开发中,我们可以使用 RecyclerView 来实现这个设计。下面将详细介绍如何使用 RecyclerView ...

    1 年前
  • Flask-RESTful 中实现自定义认证和授权机制

    在前端开发中,我们经常需要对用户进行认证和授权。Flask-RESTful 是一个优秀的 Web 框架,支持自定义认证和授权机制,可以满足前端开发的各种需求。在本文中,我们将介绍如何在 Flask-R...

    1 年前
  • RxJS 与 GraphQL 的结合使用及实战

    前言 在前端开发领域,我们经常需要请求后端接口,获取数据并渲染到页面上。而 RxJS 和 GraphQL 是两个极具影响力的技术,它们被广泛使用于前端开发的各个领域。

    1 年前
  • 用 Serverless 架构重构 GraphQL 后端

    Serverless 架构是一种相对新的云计算模型,可以使开发者不必管理服务器,仅直接编写业务逻辑即可实现应用程序。这种模型在前端领域是非常流行的,现在我们将 Serverless 和 GraphQL...

    1 年前
  • 基于 Custom Elements 和 React 实现的可移植组件库

    前言 随着前端技术的发展,组件化已经成为了前端开发的主要思想之一。在日常开发中,我们经常会遇到需要在多个项目中复用同样的组件的需求。因此,如何打造一个可移植的组件库,成为了前端开发中不可忽视的一部分。

    1 年前
  • Redux 结合 Immutable 优化 React 性能的实践

    在 React 中,由于组件的状态更新会引发整个组件的重新渲染,而且某些场景下的大数据量更新会给性能带来很大的影响。为了优化这种情况,我们可以结合使用 Redux 和 Immutable,来避免不必要...

    1 年前
  • 如何使用 ECMAScript 2020 的 Private Methods 保持代码美观及可维护

    ECMAScript 2020 中引入了一个非常有用的特性,即 Private Methods(私有方法)。使用 Private Methods 可以让我们更好地封装和组织代码,同时保护内部实现细节,...

    1 年前
  • Kubernetes 中如何进行复杂应用的拓扑约束

    前言 在 Kubernetes 中,管理应用程序是一项复杂的任务。 Kubernetes 是一种工具,允许多个应用程序协同工作,以便运行一个大规模的分布式系统。这些系统通常包含多个相互连接的部分,每个...

    1 年前
  • Next.js 服务端授权方案的实现方法

    随着互联网的发展和越来越多的在线操作,数据的安全性和保护就显得尤为重要。在前端开发中,有很多涉及到用户账户、权限等敏感信息的操作,因此服务端授权就变得至关重要。Next.js 是一种流行的 React...

    1 年前
  • # ESLint 与 webpack 结合使用

    ESLint 与 webpack 结合使用 ESLint 是一个 JavaScript 代码检查工具,可以帮助开发者发现代码中的潜在问题和不规范的写法。而 webpack 则是一个现代化的 JavaS...

    1 年前
  • ES10:String.prototype.{trimStart, trimEnd} 方法使用指南

    在 JavaScript 的最新版本中,ES10(2019),String 对象新增了两个方法,分别是 trimStart 和 trimEnd。这两个方法用于去除字符串开头和结尾的空格,同 trim(...

    1 年前
  • 高效的 React Native 组件渲染测试:Enzyme 的使用经验

    React Native 组件渲染测试是构建高质量应用的重要一环。Enzyme 是一个流行的 React 测试工具,在 React Native 应用中也很有用。Enzyme 具有简单易用的 API,...

    1 年前
  • Web Components 的开发入门

    随着前端开发的快速发展,组件化开发已经成为了一个重要的趋势。Web Components 是 W3C 的一项新技术,可以让我们更好地实现前端组件化开发的目标,使得我们能够更简单、更快速地开发出高质量的...

    1 年前
  • 如何在 ECMAScript 2015 中使用模板字符串实现模板引擎?

    在前端开发中,我们经常需要根据数据动态生成 HTML 页面。传统的方式是使用 JavaScript 拼接字符串,但是这样做会让代码难以维护并且不够灵活。因此,我们需要一个更好的解决方案,这就是模板引擎...

    1 年前
  • Mongoose 中 $gt、$lt 等相关查询操作符的用法

    Mongoose 是 Node.js 的 MongoDB 驱动程序,它提供了丰富的查询操作符,包括 $gt、$lt 等。在本文中,我们将介绍这些操作符的用法,以及它们如何帮助我们进行更快、更简单的数据...

    1 年前
  • 在实际项目中如何选择使用 CSS Grid 或是 Flexbox?

    在前端开发中,布局是我们常常需要面对的问题。而 CSS Grid 和 Flexbox 则是目前比较流行的两种实现布局的方式。如何在实际项目中选择使用 CSS Grid 或是 Flexbox 是一个需要...

    1 年前
  • Mocha 测试框架中的测试覆盖率详解!

    测试是前端开发过程中必不可少的一环,在测试过程中,测试覆盖率是一项非常重要的指标。它可以衡量测试代码对于被测试代码的覆盖程度,有助于提高代码的可靠性和稳定性。在 Mocha 测试框架中,测试覆盖率也是...

    1 年前
  • 深入探讨 JavaScript 模块系统与 ES9 标准

    随着前端开发的快速发展,JavaScript 已经成为了我们日常开发中必不可少的编程语言。模块化编程则是 JavaScript 开发中的一项关键技术。JavaScript 的模块系统已经经历了多个版本...

    1 年前
  • PM2 的静态资源服务器如何配置

    介绍 在前端项目中,我们经常需要使用一个静态资源服务器将文件发送到客户端,以便让客户端下载或访问这些文件。其中,PM2 是一个流行的 Node.js 进程管理器,它提供了一个静态资源服务器模块,可以轻...

    1 年前
  • SSE 技术在传输二进制数据时的优化建议

    随着 Web 应用程序复杂度的提高,前端对于高效的数据传输方案变得越来越重要。SSE(Server-Sent Events)作为一项用于 Web 程序中的轻量级客户端-服务器通讯技术,极大地方便了前端...

    1 年前

相关推荐

    暂无文章