大家好,我是CUGGZ。2023年1月30日至2月2日,第94届TC39会议将在线上召开,看看本次会议有哪些ECMAScript提案取得了新进展!TC39是一个促进JavaScript发展的技术委员会。它由各个主流浏览器厂商的代表组成。它的主要工作是制定ECMAScript标准。TC39每两个月召开一次会议。对于新的提案,从提案到最终包含新的ECMAScript特性,TC39规范分为五个步骤:stage0(稻草人),任何TC39成员都可以提交。stage1(proposal),进入这个阶段意味着proposal被认为是正式的,需要详细描述proposal的场景和API。stage2(草案),如果这个阶段的提案最终能进入标准,那么后续阶段不会有太大变化,因为理论上只接受增量修改。state3(candidate),这个阶段的proposal只有遇到重大问题才会修改,需要完整完成specificationdocument。state4(finished),这个阶段的提案会被纳入ES每年发布的规范中。Stage4ChangeArraybyCopy[1]:在Array.prototype和TypedArray.prototype上提供额外的方法(toReversed()、toSorted()、toSpliced()、with()),通过返回数组的新副本并更改来启用数组的改变避免了操作数组时修改原数组;Intl.NumberFormatV3[2]:扩展Intl.NumberFormat,解决一些痛点。SymbolsasWeakMapkeys[3]:允许Symbols作为WeakMaps中的键,并支持WeakRef和FinalizationRegistry中的Symbols。Stage3ArrayBuffertransfer[4]:建议添加“ArrayBuffer.prototype.transfer”(transfer,transferToFixedLength,detached)来转移ArrayBuffers的所有权,优化重新分配,将可调整大小的ArrayBuffers固定为固定长度的ArrayBuffers。Stage2ImportAssertions[5]:使用断言导入ES模块的语法提案,以解决模块类型与其MIME类型不匹配的情况(注意:该提案已从stage3降级);Intlera/monthCode[6]:Temporalonly明确定义了ISO8601时间格式和UTC时区下的行为。对于ISO8601以外的时间格式和UTC以外的时区,只提供了最基本的定义。本提案旨在进一步完善这些规范的细节;SymbolPredicates[7]:提出了两种区分符号的方法:Symbol.isRegistered(symbol)、Symbol.isWellKnown(symbol);Stage1AsyncContext[8]:提供一种机制来跟踪JavaScript中的异步上下文,影响当前Node.js的性能和接口,AsyncHooks,AsyncStorage等能力对Node.js非同步的实现具有重要意义感知链接跟踪。原型污染缓解[9]:通过引入一种安全模式来防止原型污染,该模式只允许通过方法或符号键访问原型,而不是字符串属性键。这是为了通过使原型更难被恶意操纵来提高安全性。提案链接[1]ChangeArraybyCopy:https://github.com/tc39/proposal-change-array-by-copy[2]Intl.NumberFormatV3:https://github.com/tc39/proposal-intl-numberformat-v3[3]SymbolsasWeakMapkeys:https://github.com/tc39/proposal-symbols-as-weakmap-keys[4]ArrayBuffertransfer:https://github.com/tc39/proposal-arraybuffer-transfer[5]ImportAssertions:https://github.com/tc39/proposal-import-assertions[6]Intlera/monthCode:https://github.com/tc39/proposal-intl-era-monthcode[7]Symbol谓词:https://github.com/tc39/proposal-symbol-predicates[8]异步上下文:https://github.com/tc39/proposal-async-context[9]原型污染缓解:https://github.com/syg/proposal-symbol-proto之前的推荐:
