Javascript ES2020 知识点汇总大全

阅读时长 5 分钟读完

Javascript ES2020 是 Javascript 的最新版本,它有很多新的特性和改进,所有这些都有助于提高开发效率和代码可读性。在本篇文章中,我们将介绍 Javascript ES2020 的一些核心特性和用法,让你更加深入了解这种语言。

BigInt

Javascript 数字类型默认只支持 2<sup>53</sup> - 1 (9,007,199,254,740,991) 之内的整数,超过这个范围的整数会导致精度丢失。BigInt 类型改变了这个限制,在 Javascript 中可以支持更大的整数。它是通过在数字后添加 n 来得到一个 BigInt,例如:

Promise.allSettled

Promise.allSettled() 可以接受由 Promise 对象组成的数组,返回一个 Promise 对象,当数组中所有 Promise 对象都已 settle(变为 fulfilled 或 rejected)时,该 Promise 对象 resolve。该方法 返回的 Promise 对象的状态只有 fulfilled。Promise.all() 方法在有一个 Promise 被 rejected 时,就立即结束,并返回一个 rejected 的 Promise 对象。如下:

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

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

Optional chaining

当我们需要在一个深层次对象中访问某个属性时,可能需要使用多次判断来避免报错或者 undefined。Optional chaining 的 ?. 操作符可以避免这种繁琐的判断,如果属性存在,则返回其值,否则返回 undefined。

例如我们有一个对象 person,它有一个 address 对象,address 中可能有一个 city 字段,如果我们使用 Optional chaining,则可以这样写:

这将返回 person 的 address 属性的值,如果 address 不存在,城市属性也不存在,那么它将返回 null。

Nullish Coalescing Operator

Nullish Coalescing Operator 可以用于判断一个表达式是否为 null 或者 undefined,如果是,则返回默认值。该操作符使用 ??,它与 || 的区别在于它仅在左侧操作数为 null 或者 undefined 时返回右侧的默认值。

在上面的代码中,如果 value 使用 ||,则会返回 'default',但实际上它是一个空字符串,所以我们可以使用 ?? 操作符。

globalThis

在浏览器或 Node.js 环境中使用全局对象时,有时会遇到跨平台差异的问题。Javascript ES2020 提供了 globalThis,它是一个全局变量,可以在任何环境下使用。在浏览器中,它等价于 window,而在 Node.js 中,它等价于 global。例如:

可省略的 catch 绑定

在一些场合下,我们不需要在 Promise 类型的代码中显式捕获和处理错误。可以使用 try/catch 或 .then() 的方法来处理错误,而使用可省略的 catch 绑定可以使代码更加简洁。如果不想处理错误,我们可以简单地使用下划线_

for-in/enumerate

在 ES2020 中,for-in 循环以枚举的方式遍历对象的属性,它与 Object.keys() 不同。for-in 可以枚举原型链中的属性,而 Object.keys() 仅枚举对象自身的属性。由于这个原因,for-in 循环可能非常慢,因此不推荐频繁使用。

总结

每一个 Javascript ES2020 的新功能都有着自己的特点和优势,但是我们需要在实际的项目中找到合适的应用场景。在使用它们时,我们应该谨慎使用,并确保我们充分理解每个特性。如果你想要更多全球的 Javascript ES2020 功能细节,请参阅相关文档或查找更多的官方资料 —— MDN Web Docs 等文档。

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

纠错
反馈