别让代码再臃肿,看看 ES2021 中的若干重要更新

阅读时长 5 分钟读完

近年来,前端技术的不断更新迅猛,新一代语言标准 ES2021 引入了许多新特性和语法糖,让我们不再沉浸于遗留代码的臃肿中,有效提高了前端代码的可读性和维护性。

本文将详细介绍 ES2021 中的若干重要更新,以及它们的学习和指导意义。在本文中,我们将重点涉及以下内容:

  1. String.prototype.replaceAll()
  2. 数字分隔符
  3. Promise.any()
  4. WeakRefs

1. String.prototype.replaceAll()

在 ES2021 中,新添加了一个新方法:String.prototype.replaceAll()。该方法接收两个参数,第一个参数是被替换的字符串,第二个参数则是新字符串。

顾名思义,String.prototype.replaceAll() 方法用于替换字符串中的所有匹配项。如果原字符串中有多个和第一个参数相同的子字符串,则全部被替换为第二个参数。

下面是一个示例代码:

该方法在开发中应用广泛,比如处理后端返回的 JSON 数据时,可以方便地将 JSON 字符串中的所有某种无用符号全部替换掉。

2. 数字分隔符

随着计算机在现代社会中的普及,数字数据的大小和复杂程度不断扩大。为了让我们更轻松地读懂一串庞大的数字,ES2021 引入了数字分隔符(Numeric Separators)的新语法规则。

数字分隔符不改变 JavaScript 数字本质上的数据类型,仅仅是为了方便程序员阅读和书写。该语法规则支持开发者在数字之间插入"_"(下划线)或"'"(单引号)来分隔数字。例如:

这个特性是一个美好的开始,可以尽可能使开发人员编写数字时更易于阅读和理解代码,从而提高代码的可读性和可维护性。

3. Promise.any()

Promise.any() 方法是 Promise.race() 方法的另一个变体。它接收一个 Promise 数组作为参数,当其中一个 Promise 被成功解决的时候,它就会返回该 Promise 的结果。

这个特性的作用类似于 Promise.all(),但它与 Promise.race() 不同的是它只需要其中任何一个 Promise 完成即可。这对于那些调用多个异步 API 的平均情况非常有用。

在实际情况中,任何一个 API 可能就像天气 API 一样被暂时关闭:当您想要获取天气预报但服务在下雨时不可用,您可能希望消息通知 API。这里,您需要同时调用两个 API,在天气 API 和消息通知 API 返回结果之前,您的计算模块或服务可能会等待不必要的时间,但是最慢的 API 应该应该有一个执行行为是应该快速失败并尝试使用其他 API,这就是 Promise.any() 方法的作用。

下面是一个示例代码:

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

该示例将返回第二个 Promise 的结果 'World'。

4. WeakRefs

WeakRefs 是 JavaScript 语言本身提供的垃圾回收手段之一。

在某些情况下,我们需要关心引用的临时性质,例如,要将数据存储在缓存中,但当 RAM 不够时,数据可以被回收,与此同时保留对最新数据的引用。那么这时候 WeakRefs 就显得十分有用。

WeakRefererence 提供了一种处理不再需要继续占用内存的对象的方式。这比前端开发者自行管理的手动垃圾收集更可靠,而且更加安全。

下面是一个示例代码:

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

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

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

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

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

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

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

该示例就展示了一个使用 WeakRefs 实现缓存功能的例子,利用WeakMap 在缓存数据与引用数据之间建立映射,一旦缓存数据失去了引用,它就会被垃圾回收机制自动清除。

结论

ES2021 中的这几个新特性 和语法糖是当前前端开发必不可少的一部分。它们可以为我们提供高效的编码方式,提高代码的可读性和可维护性。

我们应该充分了解这些新特性的优点,然后根据需要将它们应用到实际的开发场景中。

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

纠错
反馈