Code前端首页关于Code前端联系我们

ES2020 JavaScript 功能

terry 2年前 (2023-09-09) 阅读数 156 #Javascript
文章标签 ES2020JavaScript

新的 ES2020 功能现已完成,这意味着我们现在对 ES2020(新的和改进的 JavaScript 规范)将要发生的变化有了完整的了解。

现在是学习ES2020的最佳时机!

这篇文章我将和大家一起了解ES2020的10个新特性。

ES2020 JavaScript特性

BigInt

JavaScript 中最令人期待的功能之一终于出现了。它实际上允许开发人员在 JS 代码中使用更大的整数表示进行计算。

目前 JavaScript 中可以存储为整数的最大数字是 pow(2.53) – 1。但是 BigInt 可以让你做更多。

ES2020 JavaScript特性

但是,您必须在数字末尾添加 n,如上所示。 n 表示这是一个 BigInt,JavaScript 引擎(v8 引擎或它使用的任何引擎)应该以不同的方式对待它。

此增强功能不向后兼容,因为传统编号系统是 IEEE754(不支持此大小的数字)。

动态导入

JavaScript 中的动态导入使您能够将 JS 文件作为模块动态导入到您的应用程序中。这与您现在使用 Webpack 和 Babel 所做的完全相同。

此功能可帮助您发布按需代码,而无需 webpack 或其他模块绑定,也称为代码共享。如果需要,您还可以有条件地加载 if-else 块中的代码。

优点是您实际上导入了一个模块,因此它不会污染全局命名空间。

ES2020 JavaScript特性

无效合并

空合并增加了实际检查空值而不是错误值的能力。你可能会问,null 和 falsey 有什么区别?

在 JavaScript 中,很多值都是 false,比如空字符串、数字 0、undefined、null、false、NaN 等。

但很多时候您可能想要检查变量是否为空 - 也就是说,它是否未定义或为空,例如当变量可以有空字符串甚至假值时。

在这种情况下,您想使用新的空合并运算符??

ES2020 JavaScript特性

您可以清楚地看到如何||运算符始终返回实值以及 null 运算符如何返回非空值。

可选链条样式

可选的链语法允许您访问深度嵌套的对象属性,而不必担心该属性是否存在。如果不存在,则返回undefined。

这不仅适用于对象属性,还适用于函数调用和数组。超级实用!这是一个例子:

ES2020 JavaScript特性

承诺.一切已解决

Promise.allsettle 方法接受一系列 Promise,并且仅当所有 Promise 都得到解决(解决或拒绝)时才解决。

这在之前是不可用的,尽管一些严格的实现(例如race和all)可用。这给 JavaScript 带来了“只运行所有的 Promise——我不关心结果”的特性。

ES2020 JavaScript特性

字符串#matchAll

matchAll 是在与正则表达式相关的字符串原型中添加的新方法。这将返回一个迭代器,它将按顺序返回所有匹配的组。让我们看一个简单的例子:

ES2020 JavaScript特性

全球这个

如果您正在编写可以在 Node 上运行、在浏览器环境中运行或在 Web Worker 中运行的跨平台 JS 代码,那么您将很难掌握全局对象。

这是因为浏览器有窗口,节点有全局,网络工作者有 self。如果有多个运行时,它们的全局对象将会不同。

因此,您必须拥有自己的实现来检测运行时,然后使用正确的全局变量 - 也就是说,到目前为止。

ES2020 为我们提供了 globalThis,无论您在何处运行代码,它始终引用全局对象:

模块名称导出

在 JavaScript 模块中,以下语法已经可用:

import * as utils from './utils.mjs'

但到目前为止还不存在对称派生语法:

export * as utils from './utils.mjs'

这对应于以下内容:

import * as utils from './utils.mjs'
export { utils }

按顺序

ECMA 规范没有指定 for(x in y) 的运行顺序。尽管浏览器之前自己实现了一致性排序,但在 ES2020 中正式标准化。

导入.meta

Import.meta 对象由 ECMAScript 实现创建,并具有一个空原型。

考虑模块 module.js:

<script type="module" src="module.js"></script>

您可以使用 import.meta 对象访问有关模块的元信息:

console.log(import.meta); // { url: "file:///home/user/module.js" }

它返回一个带有 url 属性的对象,该属性指示模块的基本 URL。这将是从中检索脚本的 URL(对于外部脚本),或包含文档的文档基 URL(对于嵌入式脚本)。

结论

JavaScript发展如此之快,大家要更加努力,奥利! ! !

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

上一篇:js删除对象属性 下一篇:js 命名空间

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门