ES11 与 ES12 新特性的主要区别

ES11 和 ES12 都是 JavaScript 的新版本,它们分别于 2020 年和 2021 年发布。本文将介绍 ES11 和 ES12 的主要区别,并提供示例代码和指导意义。

ES11 新特性

1. 可选链操作符(Optional chaining operator)

可选链操作符 ?. 可以在访问嵌套对象时避免出现 undefined 错误。例如,如果要访问 person.address.city,但是 personaddressundefined,则会出现错误。使用可选链操作符可以避免这种情况:

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

2. 空值合并操作符(Nullish coalescing operator)

空值合并操作符 ?? 可以在变量为 nullundefined 时返回默认值。例如:

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

如果 person.namenullundefined,则 name 的值为 'Unknown'

3. Promise.allSettled()

Promise.allSettled() 方法返回一个 Promise,该 Promise 在所有 Promise 已解决或已拒绝时解决,并返回一个对象数组,该数组包含每个 Promise 的结果或原因。例如:

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

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

输出结果如下:

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

4. String.prototype.replaceAll()

String.prototype.replaceAll() 方法可以替换字符串中的所有匹配项。例如:

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

5. 新的正则表达式特性

ES11 引入了几个新的正则表达式特性,包括 /(?<name>group)/ 命名捕获组、/s 模式修饰符、以及 String.prototype.matchAll() 方法。

ES12 新特性

1. Promise.any()

Promise.any() 方法返回一个 Promise,该 Promise 在任何一个 Promise 已解决时解决,并返回该 Promise 的结果。如果所有 Promise 都被拒绝,则返回一个 AggregateError 对象,该对象包含所有 Promise 的原因。例如:

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

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

2. WeakRef 和 FinalizationRegistry

WeakRef 和 FinalizationRegistry 是两个新的 JavaScript API,它们可以帮助开发者更好地管理内存。WeakRef 可以创建一个弱引用,FinalizationRegistry 可以在对象被垃圾回收时执行回调函数。例如:

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

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

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

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

-- ---------

3. 数字分隔符

ES12 引入了数字分隔符 _,可以在数字中间插入分隔符以提高可读性。例如:

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

4. 私有字段和方法

ES12 引入了私有字段和方法的语法。使用 # 前缀可以将字段和方法声明为私有的。例如:

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

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

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

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

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

总结

ES11 和 ES12 带来了许多有用的新特性,包括可选链操作符、空值合并操作符、Promise.allSettled()、Promise.any()、WeakRef 和 FinalizationRegistry、数字分隔符以及私有字段和方法。这些新特性可以提高开发效率、减少代码错误,并且更好地管理内存。开发者应该积极学习并使用这些特性,以提高自己的 JavaScript 技能。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/662a0161c9431a720c7967c0