ECMAScript 2020新特性

ECMAScript 2020是我们最喜欢的编程语言的第11部分,其中包含一些新功能。有些是小型的,但有些则有可能永远改变我们编写JavaScript的方式。

本文是对这些新功能的简短概述,我们一起看看有哪些新特性。

1、 Dynamic import()

ES2020引入了static import语法。现在您可以从一个模块导出变量,然后将其导入另一个模块。

ECMAScript 2020新特性_第1张图片

该语法称为静态语法,因为您无法在运行时动态导入模块(取决于某些条件)。请注意,这不一定是一件坏事:静态导入可以在编译时进行优化,从而允许Tree Shaking。

另一方面,如果合理地使用了动态导入,则可以通过按需加载依赖项来帮助减少分发包的大小。

新dynamic import语法看起来像一个函数(但不是),它返回一个promise,这也意味着我们可以对其使用async / await。

ECMAScript 2020新特性_第2张图片

2、 Nullish coalescing

使用短循环设置默认值的流行方法有其缺陷。由于它实际上不是在检查空度,而是在检查虚假性,因此它会破坏像false或的值0(两者均被视为虚假)。

ES2020引入了一个新的运算符??,该运算符的工作原理类似,但仅当初始值为null或时才求右手undefined。

这是一个简单的示例:

ECMAScript 2020新特性_第3张图片

我写了一篇有关此功能的详细文章,以及它与设置默认值的其他方法的比较。(https://www.strictmode.io/articles/nullish-coalescing-vs/

3、 Optional chaining

新的optional chaining运算符旨在在处理嵌套对象和检查可能的代码时使代码更短undefineds。

ECMAScript 2020新特性_第4张图片

4、 BigInt

BigInt是一个新的对象,它代表大于的数字Number.MAX_SAFE_INTEGER(是2^53 - 1)。对于普通人来说,听起来可能绰绰有余,但对于某些数学应用程序和机器学习而言,这种新BigInt类型非常有用。

它带有自己的文字符号(只需n在数字后面加上一个):

ECMAScript 2020新特性_第5张图片

BigInts带有自己的代数,这些代数不会转换为常规数字,因此我们无法将数字与BigInts混淆。应该先将它们强制为任一类型。

ECMAScript 2020新特性_第6张图片

5、 String.matchAll

所以这是一个例子。想象一下,您有一串很长的文本,您需要从中提取所有标签(以开头的单词#)。正则表达式可以解救!

ECMAScript 2020新特性_第7张图片

matchAll返回一个迭代器。我们可以使用进行迭代for..of,也可以将其转换为数组。

6、 Promise.allSettled

还记得Promise.all函数吗?它仅在所有通过的承诺均得到解决时才解决。它拒绝至少一项承诺是否被拒绝,而其他承诺可能仍未完成。

新的allSettled行为有所不同。每当所有的诺言完成时,即成为兑现或被拒绝,它都会解决。它解析为一个数组,其中包含promise的状态及其所解析的内容(或错误)。

因此,allSettled永远不会被拒绝。是pending或resolved。

实际问题可能是删除加载指示器:

ECMAScript 2020新特性_第8张图片

7、 globalThis

在JavaScript中,总是有一个包含所有内容的大型上下文对象。传统上,在浏览器中是window。但是,如果尝试在Node应用程序中访问它,则会收到错误消息。windowNode中没有全局对象;相反,有global对象。再一次,在WebWorkers中,无法访问window,但是可以访问self。

新globalThis属性消除了差异。这意味着您始终可以在globalThis不关心您现在所处的上下文中进行引用。

现在,如果您认为命名有点尴尬,那么我完全支持您,但是请注意,命名self还是global会使某些较旧的代码不兼容。所以我想我们必须忍受这一点。

8、 最后

为了您的方便,这里是本文提到的每个功能的MDN文档的链接。

Dynamic imports : 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

Nullish coalescing :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

Optional chaining :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining

BigInt :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt

Promise.allSettled :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled

globalThis :  

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis

翻译原文地址:https://www.strictmode.io/articles/whats-new-es2020/

了解新钛云服

新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照

TiOps,支持多云环境安全远程运维,疫情期间免费对外开放,助力远程安全办公!

深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资

新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁

新钛云服一周年,完成两轮融资,服务五十多家客户

上海某仓储物流电子商务公司混合云解决方案

新钛云服出品的部分精品技术干货

国内主流公有云VPC使用对比及总结

万字长文:云架构设计原则|附PDF下载

刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!

Ceph OSD故障排除|万字经验总结

七个用于Docker和Kubernetes防护的安全工具

运维人的终身成长,从清单管理开始|万字长文!

OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

什么是云原生?

IT混合云战略:是什么、为什么,如何构建?

你可能感兴趣的:(ECMAScript 2020新特性)