前言ES2021或者说ES12在今年夏天早些时候发布了(具体ES2021的新特性,可以在这里查看),现在让我们来看看ES2022会带来哪些有趣的新特性。在本文中,介绍并解释了最新规范草案中接受的建议。注意:每个功能提案都遵循一个过程,它会经历各个阶段,直到第4阶段,这表明新功能已准备好包含在正式的ECMAScript标准中,并将以最快的速度包含在实用标准的修订版本中。以下功能已经完成,处于第4阶段,并已添加到最新的ECMAScript草案中。声明类的字段到目前为止,在ES规范中,类的字段定义和初始化都是在类的构造函数中完成的。但在新提案中,类字段可以在类的顶层定义和初始化。私有方法和字段定义有#前缀来定义类的私有方法和字段。StaticPublicMethodsandFieldsofClasses在之前的FieldsandPrivateMethodsofClasses提案的基础上,为JavaScript类增加了静态公共字段、静态私有方法和静态私有字段的特性。正则表达式匹配索引该提案提供了一个新的/dflag来获取有关输入字符串中每个匹配项在索引位置开始和结束位置的额外信息。例如:注意:包含begin但不包含end的await顶级await允许在异步函数之外使用await关键字。该提议允许模块被视为大型异步函数,因此这些ECMAScript模块可以等待资源加载,这样导入这些模块的其他模块也将等待资源加载后再开始执行自己的代码。声明公共字段时,会得到未定义的结果,而访问私有字段会抛出异常。我们根据这两种行为来判断是否有公共字段和私有字段。但是这个建议引入了一个更有趣的解决方案,它涉及到使用in运算符,如果指定的属性/字段在指定的对象/类中,则返回true,并且还可以判断私有字段是否在所有内置的可索引数据中new.at()方法添加了一个新的数组方法来通过给定索引获取元素。当给定的索引为正时,这个新方法的行为与使用括号表示法访问相同,但是当我们给出负整数索引时,它的工作方式类似于python的“负索引”,这意味着at()方法使用负整数作为一个索引,从数组中的最后一项开始计数。所以这个方法可以实现为array.at(-1),其行为与array[array.length-1]相同。在下面的示例中,您可以看到Object.hasOwn(object,property)只是简单地使用Object.hasOwn来替换Object.prototype.hasOwnProperty.call(太长,不好看)ECMAScriptclassstaticinitializationblockTheclassstaticblockproposalprovidesan在类声明/定义期间评估静态初始化代码块的优雅方式,可访问类的私有字段注意:Typescript4.4还支持引用https://github.com/tc39/proposals/blob/master/finished-proposals.mdhttps://2ality.com/2021/09/class-static-block.htmlhttps://tc39.es/process-document/https://tc39.es/ecma262/https://v8.dev/features/top-level-awaithttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/matchAllhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/数组/位于https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static
