2019谷歌i/o大会上提出的javascript新特性,还学的动么?

阅读时长 4 分钟读完

在 2019 年的 Google I/O 大会上,Google 宣布了一些新的 JavaScript 特性和语法。这些新特性可以让开发人员编写更简洁、更清晰、更易读的代码,并且提高代码的性能和可维护性。本文将深入介绍这些新特性,并提供相关示例代码。

1. 可选链操作符

在 JavaScript 中,当我们需要访问一个对象的属性时,通常会使用 . 运算符来获取属性值。例如:

但是,如果 person 对象为空或者 name 属性不存在,那么代码就会出错。为了避免这种情况,我们通常需要添加一些额外的检查代码,如下所示:

这段代码会先判断 person 是否存在,如果存在则继续获取其 name 属性的值。但是这样的代码非常繁琐,而且容易出错。为了解决这个问题,ES2020 引入了可选链操作符(Optional Chaining Operator),可以使我们的代码更加简洁明了。

可选链操作符由 ?. 组成,可以用于连接多个属性或方法,如果中途出现了 nullundefined 值,则会立即返回 undefined,而不会继续执行后面的操作。例如:

如果 person 对象为空或者 name 属性不存在,那么 name 变量的值将为 undefined

2. 空值合并运算符

在 JavaScript 中,如果一个值为 nullundefined,则可以使用逻辑或运算符 || 来提供默认值。例如:

如果 person 对象为空或者 name 属性不存在,那么 name 变量的值将为 'unknown'。但是如果 name 属性的值为空字符串、数字 0 或者布尔值 false,那么上述代码仍然会出错。

为了解决这个问题,ES2020 引入了空值合并运算符(Nullish Coalescing Operator),可以在变量为空或者为 nullundefined 时提供默认值。空值合并运算符由 ?? 组成,例如:

如果 person 对象为空或者 name 属性不存在,那么 name 变量的值将为 'unknown'。但是如果 name 属性的值为空字符串、数字 0 或者布尔值 false,那么 name 变量的值将仍然为 ''0 或者 false

3. Promise.allSettled()

在 JavaScript 中,我们通常会使用 Promise 对象来处理异步操作。Promise.all() 方法可以让我们同时执行多个 Promise 对象,并等待所有 Promise 都完成后再继续执行下一步操作。

ES2020 引入了 Promise.allSettled() 方法,可以让我们更加方便地处理多个 Promise 对象。与 Promise.all() 不同,Promise.allSettled() 方法不会在任何 Promise 被拒绝时抛出异常,而是返回一个包含所有 Promise 的状态(已成功、已拒绝)和结果的数组。例如:

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

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

上述代码将输出如下结果:

纠错
反馈