APP下载

Ecma国际已核准ECMAScript 2020规范

消息来源:baojiabao.com 作者: 发布时间:2024-05-26

报价宝综合消息Ecma国际已核准ECMAScript 2020规范

最新的ECMAScript 2020规范已经通过资讯和电信标准组织Ecma国际批准。ECMAScript 2020加入了多种新功能,包括用来动态汇入模组的import()语法,还有能够处理任意精度整数的BigInt,都是ECMAScript 2020的重点功能。ECMAScript是一种脚本语言规范,JavaScript则是ECMAScript的实作。

从ES 2015开始,JavaScript便进入滚动发行(Rolling Release)的新阶段,尽管ECMAScript规范的新版本,需要经过提案、讨论、批准和最终确认多个过程,但是与年度更新比较起来,各浏览器支援个别新功能的时间,通常早于规范释出的时间,不过,ECMAScript 2020规范正式核准,仍然是一个重要的里程碑。

ECMAScript 2020最大的功能更新,可以说就是BigInt,这是JavaScript中第7个原语资料类型,这个资料类型可让开发者使用一些非常大的整数,JavaScript原生Number能够表示的最大值为2的53次方,而BigInt则可以表达大于2的53次方的数字,BigInt跟Number用法很相似,但仍有些许不同,BigInt不能被用在Math物件方法里,也不能和Number混合计算,必须要先转为同一个型态才行,且当BigInt被降转成Number时,可能会遗失部分精度资讯。目前以Chromium为基础的浏览器,还有Firefox都已经支援,Safari进度则落后。

新规范也纳入了动态汇入,这是一个V8引擎在2017年就加入的功能,现在所有主流浏览器也都已经支援。标准汇入语法为静态的,静态汇入可能会大幅降低程式码载入速度,而且可能大部分程式码不会被用到,而且可能占用大量内存。

因此在ECMAScript 2020中提供动态汇入,类似函式形式的import()模组,只要使用动态指示符号,就能够异步载入模组,使import()表示式能够载入模组,并且回传包含模组所有内容的Promise物件,该物件在程式码的任何位置都能被呼叫,动态汇入不只能够与ES 2015的.then()方法一起使用,也能结合最新的async/await语法。

尽管动态汇入在部分情况可以解决静态汇入的问题,但开发者仍需要谨慎使用,静态汇入仍有其优点,其对于载入初始相依项目更可靠,且可经静态分析和树摇工具处理,能提高程式效能并移除不必要的程式码。

无效值联合运算子(Nullish Coalescing Operator)则是一个新的逻辑运算子,表示为??,当其左侧算子为null或是未定义时,则回传右侧算子。??和逻辑OR运算子||相反,当左算子不为null或是未定义时,就回传左算子,所以当需要考量除了null或是未定义之外的其他伪值,让\'\'以及0都可用时,则开发者便可选用无效值联合运算子。

另外一个相似??的新运算子,称为可选串连运算子,表示为?.,同样是用来处理null或是未定义的无效值,不过可选串连运算子则是专门处理物件,过去在存取无效值属性时会出现错误,但是当使用可选串连运算子,则仅会回传null或是未定义值,也就是当要存取一个函式,但是该函式不存在,则会回传未定义。

此外,ECMAScript 2020的字串加入了一个新的matchAll()方法,在while循环中使用g旗标,便可作为正规表示式方法RegExp.exec()的替代,该方法会回传一个Iterator,里面包含了所有配对成功的字串结果。

2020-06-23 13:48:00

相关文章