译-ECMAScript2020
是时候对JavaScipt进行更新。本文我们一起回顾来自ES2020的最新的和最伟大的功能。
#
安装因为很多人不以为更新浏览器可以减轻开发者的工作, 我们需要借助babel来使得用户可以使用不发使用的功能。为了这个简单的目标,我们使用Parcel bundler让一切尽可能快的运行起来。
$ yarn add parcel-bundler
package.json
可惜的是, 因为此时我们写的东西超前所以没有关于ES2020的预解析。如果你把以下内容保存到.babelrc文件, Parcel会帮你进行相关安装。
.babelrc
#
class的私有变量class主要目的之一是将代码包含到更多可重复使用的模块中去。我们创建一个class使用在很多不同的地方, 但是你可能并不希望他全部的内部东西全局可用。
现在, 通过在变量和函数前添加一个简单的hash标志(#), 这个标志可以全部保留到class内部使用。
#
Promise.allSettled当和多个promise同时工作的时候, 尤其他们相互依赖时, 记录调试错误发生了什么是很有用的。借助Promise.allSettled
我们可以创建一个当所有promise都完成时才返回的promise。我们可以访问包含每个promise数据的数组。
#
Nullish Coalescing Operator(空合并运算符)因为JavaScript是动态类型, 在分配变量时, 我们需要记住JavaScript对真/假值的处理。假如我们有一个具有多个变量的对象, 有时我们允许想空对象或者数组0这样的假值。设置默认值很快会变得很烦人, 因为他会覆盖应该是有效的值。
我们使用两个问号(空合并运算符)替代逻辑与运算符使类型更加严格, 这样做仅允许null或者undefined设置默认值。
#
Optional Chaining Operator与前一个运算相似, JavaScript在假值处理时, 可能不会按照我们的预期进行操作。如果是undefined则返回一个值, 但是如果得到这个值之前出现undefined怎么办?
我们在.
之前加问号可以使路径的任何部分变为可选, 以至于可以进行交互。
#
BigInt我们不想探究JavaScript如何操作数字的技术细节, 但是当数字足够大时变得不稳定。JavaScript中可操作的最大值是2^53, 即MAX_SAFE_INTEGER。
上边的事情开始变得有点不可思议...
我们用一个新的new BigInt来回避这个问题。通过在尾部加n
对超级大的数字进行操作。我们无法把标准数字和BIgInt进行混合, 因此需要运算的需要都是BigInt型。
#
Dynamic Import假如你有一个全部是工具函数的文件, 文件中的大部分很少使用且全部导入他们的依赖浪费资源。现在我们使用async/await
在需要的地方动态导入我们的依赖。