
Ecma 技术委员会 39(TC39),负责 JavaScript(ECMAScript)发展的机构,最近在其阶段流程中推进了九个提案,其中有三个新的语言特性将成为标准的一部分:Array.fromAsync、Error.isError 和显式资源管理 using
。
Array.fromAsync
是一个从异步可迭代对象创建数组的实用工具。这简化了从异步生成器或流等数据源收集数据的过程,消除了手动使用 for await...of
循环的需要。
特性解释器提供了以下来自httptransfer模块的实际示例:
使用新语法,这变为:
Error.isError()
方法也推进到第 4 阶段,提供了一种可靠的方法来检查一个值是否是错误实例。替代方案 instanceof Error
被认为是不可靠的,因为它会在跨域(例如,来自 iframe 或 node 的 vm
模块)错误实例中提供Error
的否定结果。
另一个达到第 4 阶段的提案是显式资源管理,引入了用于管理需要显式清理的资源(如文件或网络连接)的 using
声明。这个提案特别受到资源管理不一致模式的驱动:ECMAScript 迭代器的 iterator.return()
、WHATWG 流读取器的 reader.releaseLock()
、NodeJS 文件句柄的 handle.close()
等。
提案还缓解了几个潜在的问题。例如,在管理多个资源时:
Import Attributes (原名 Import Assertions)推进到第 3 阶段。这个特性允许开发者向import声明添加元数据,提供关于模块预期类型的信息,如 JSON 或 CSS。
其他在不同阶段推进的提案包括 Promise.try
,旨在简化 promise 链中的错误处理, RegExp.escape
用于在正则表达式中安全转义字符串等。开发者可以在网上的博客文章中查看完整列表。
TC39 是发展 JavaScript 的委员会。其成员包括所有主要的浏览器供应商等。每个 ECMAScript 特性的提案都会经历以下几个成熟的阶段:
第 0 阶段:初步构想
第 1 阶段:提案
第 2 阶段:草案
第 3 阶段:候选
第 4 阶段:完成
一旦一个特性的提案达到第 4 阶段,它将被包含在标准中,因此可以安全使用。然而,浏览器对特性的支持可能会落后于标准中特性的采用。
原文链接:
评论