天天看点

适用于JavaScript的ECMAScript 2020规范向前发展

ECMAScript 2020是JavaScript底层官方规范的下一个版本,预计将在6月正式采用,但需要获得ECMA International和负责规范的ECMA技术委员会的批准。

ECMAScript 2020引入了多种功能,从用于加载模块的新

import()

工具到用于处理任意精度整数的新

BigInt

类型。

[ 同样在InfoWorld上:TypeScript与JavaScript:了解差异 ]

ECMAScript 2020计划的特定功能包括:

  • “函数式”

    import()

    模块加载语法,以使用动态说明符异步导入模块。 该提案添加了

    import(specifier)

    语法形式,其功能类似于函数。 它返回请求模块的模块名称空间对象的承诺,该承诺是在获取,实例化和评估模块的依赖项以及模块本身之后创建的。 该

    specifier

    解释方式与

    import

    声明中的解释方式相同。

    specifier

    是字符串,但不一定是字符串文字。 因此,像

    import(`./language-packs/${navigator.language}.js`)

    这样的代码就可以工作。 通常的

    import

    申报单不可能做到这一点。 根据该计划,建议使用

    import()

    在模块和脚本中都可以使用,从而为脚本代码提供了进入模块世界的简便异步入口点,并允许其开始运行模块代码。
  • BigInt ,

    一个新的数字原语,用于处理任意精度的整数。

    BigInt

    可以表示大于2到53的幂的数字,JavaScript可以使用Number原语可靠地表示最大的数字。 通过将

    n

    附加到整数的末尾或调用构造函数来创建

    BigInt

  • 用于字符串的

    matchAll

    方法,用于为全局正则表达式生成的所有匹配对象生成一个迭代器。 此提议的基本原理是,如果开发人员具有字符串以及带有多个捕获组的粘滞或全局正则表达式,则开发人员可能希望遍历所有匹配项,为此,目前存在多种选择,但有局限性。

    String#matchAll

    通过提供对所有捕获组的访问而不会明显改变所讨论的正则表达式对象来解决问题。
  • allSettled

    ,一个不会短路的新的Promise组合器。 这将返回一个承诺,该承诺将通过一系列承诺状态快照来实现,但前提是必须满足原始承诺,即已经实现或拒绝了。
  • globalThis

    ,提供了一种访问全局

    this

    值的通用方法。
  • export * as ns from 'module'

    语法专用

    export * as ns from 'module'

    以在模块内使用。
  • 增加了

    for-in

    枚举顺序的标准化,在JavaScript中部分指定了枚举顺序。
  • import.meta ,

    是Modules中一个主机填充的对象,可以包含上下文信息。 这用作JavaScript元属性,保存有关当前模块的主机特定的元数据。
  • 空值合并 ,一个值选择运算符,用于更好地处理涉及财产访问的案件。 它是一种语法功能,可以改善对“空”值(

    null

    或未定义)的使用。
  • 可选链接 ,一个属性访问和函数调用运算符,如果要访问/调用的值为空,它将短路。

ECMAScript的最新更新ECMAScript 2019具有嵌套数组的

prototype.flatMap

等功能。

From: https://www.infoworld.com/article/3538809/ecmascript-2020-spec-for-javascript-moves-forward.html