完整 ES10 和 ECMAScript 2019 功能列表

阅读时长 5 分钟读完

简介

ECMAScript 是一种由 Ecma 国际组织标准化的脚本语言,它被广泛应用于 Web 开发中。随着技术的发展,ECMAScript 的版本也不断更新,新增了许多重要的功能。本文将介绍 ES10 和 ECMAScript 2019 中新增的功能,并提供详细的说明和示例代码,希望可以为前端开发者提供帮助。

可选链运算符

可选链运算符是 ES10 中最重要的新特性之一。在之前的版本中,开发者经常需要通过繁琐的 if 判断来避免 undefined 或 null 值的错误。

例如,在查找一个对象的某个属性时,我们经常需要这样写:

可选链运算符 ?. 可以简化这段代码:

当 obj 或 prop1 不存在时,?. 不会报错,而是直接返回 undefined

nullish 合并运算符

nullish 合并运算符 ?? 是另一个重要的新特性。它可以用来在某些变量为 null 或 undefined 时,提供默认值。

例如,在给变量赋值时,我们经常需要写这样的代码:

使用 nullish 合并运算符,可以简化这段代码:

当 bar 为 null 或 undefined 时,?? 会返回其右侧的默认值,否则返回 bar 的值。

Promise 的 finally 方法

Promise 的 finally 方法也是 ES10 中新增的新特性之一。它可以在 Promise 执行后,无论是 resolve 还是 reject,都会执行指定的回调函数。

例如:

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

在这个例子中,无论 fetch 请求成功还是失败,finally 方法都会被执行。这个特性可以让开发者在 Promise 执行后进行必要的清理工作。

Array 的 flat 和 flatMap 方法

ES10 还新增了 Array 的 flat 和 flatMap 方法,可以用来操作嵌套的数组结构。

flat 可以用来将嵌套的数组结构“打平”,返回一个新的一维数组。例如:

flat 方法可以接受一个参数,表示要“打平”的层数。默认为 1。

flatMap 方法则可以对数组中的每个元素进行映射,结果再通过 flat 方法“打平”成一维数组。例如:

字符串的 trimStart 和 trimEnd 方法

字符串的 trimStart 和 trimEnd 方法可以分别用来去除字符串开头和结尾的空白字符。

例如:

Object 的 fromEntries 方法

Object 的 fromEntries 方法可以将由键值对组成的数组,转换为一个对象。

例如:

该方法可以用来将 URLSearchParams 转换为一个对象,或将一个对象转换为一个数组。

数组和对象的扩展运算符

ES2018 引入了数组和对象的扩展运算符,可以用来将一个数组或对象“打散”成多个元素。

例如:

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

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

这个特性可以用来在函数调用时,将对象的属性“打散”成函数的参数。

结论

本文介绍了 ES10 和 ECMAScript 2019 中新增的一些重要功能,包括可选链运算符、nullish 合并运算符、Promise 的 finally 方法、Array 的 flat 和 flatMap 方法、字符串的 trimStart 和 trimEnd 方法、Object 的 fromEntries 方法,以及数组和对象的扩展运算符。这些新特性可以使开发者编写更简洁、更易读、更高效的代码,并提高生产力。如果你还没有深入了解这些新特性,现在就是个好时机。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f6f660c5c563ced58d8807

纠错
反馈