我们一起聊聊ECMAScript 提案最新的进展

开发 前端
2023 年 1 月 30 日至 2 月 2 日,第 94 次 TC39 会议在线举行,下面来看看在这次会议中哪些 ECMAScript 提案取得了新进展!

大家好,我是 CUGGZ。

2023 年 1 月 30 日至 2 月 2 日,第 94 次 TC39 会议在线举行,下面来看看在这次会议中哪些 ECMAScript 提案取得了新进展!

TC39 是一个推动 JavaScript 发展的技术委员会,由各个主流浏览器厂商的代表构成,其主要工作就是制定 ECMAScript 标准。TC39 每两个月举行一次会议。

对于新提案,从提出到最后被纳入 ECMAScript 新特性,TC39 的规范中分为五步:

  • stage0(strawman),任何TC39的成员都可以提交。
  • stage1(proposal),进入此阶段就意味着这一提案被认为是正式的了,需要对此提案的场景与API进行详尽的描述。
  • stage2(draft),这一阶段的提案如果能最终进入到标准,那么在之后的阶段都不会有太大的变化,因为理论上只接受增量修改。
  • state3(candidate),这一阶段的提案只有在遇到了重大问题才会修改,规范文档需要被全面的完成。
  • state4(finished),这一阶段的提案将会被纳入到ES每年发布的规范之中。

Stage 4

  • Change Array by Copy[1]:在 Array.prototype 和 TypedArray.prototype 上提供额外的方法(toReversed()、toSorted()、toSpliced()、with()),通过返回数组的新副本和更改来启用数组的更改,避免再操作数组时修改原数组;
  • Intl.NumberFormat V3[2]:扩展Intl.NumberFormat,解决一些痛点问题。
  • Symbols as WeakMap keys[3]:允许 Symbol 作为 WeakMaps 中的键,并在 WeakRef 和 FinalizationRegistry 中支持 Symbol。

Stage 3

  • ArrayBuffer transfer[4]:建议添加“ArrayBuffer.prototype.transfer”(transfer,transferToFixedLength,detached),用以转移 ArrayBuffers 的所有权、优化重新分配以及将可调整大小的 ArrayBuffers 固定为固定长度的 ArrayBuffers。

Stage 2

  • Import Assertions[5]:使用断言导入 ES 模块的语法提案,用以解决模块类型与其MIME类型不符的情况(注意:该提案已从第 3 阶段降级);
  • Intl era/monthCode[6]:Temporal 仅对 ISO8601 时间格式与 UTC 时区下的行为做了明确定义,对 ISO8601 以外的时间格式和 UTC 以外的时区,只提供了最基本的定义,该提案旨在对这些规范细节进行进一步的完善;
  • Symbol Predicates[7]:提出了两个区分 symbol 的方法:Symbol.isRegistered(symbol)、Symbol.isWellKnown(symbol);

Stage 1

  • Async Context[8]:提供一种机制来跟踪 JavaScript 中的异步上下文,它影响目前 Node.js Async Hooks,Async Storage 等能力的性能和接口,对 Node.js 无感知链路追踪的实现有着重大意义。
  • Proto pollution mitigation[9]:通过引入一种安全模式来防止原型污染,该模式只允许通过方法或 symbol 键访问原型,而不是字符串属性键。这旨在通过使原型更难被恶意操纵来提高安全性。

提案链接

[1] Change Array by Copy: https://github.com/tc39/proposal-change-array-by-copy

[2] Intl.NumberFormat V3: https://github.com/tc39/proposal-intl-numberformat-v3

[3] Symbols as WeakMap keys: https://github.com/tc39/proposal-symbols-as-weakmap-keys

[4] ArrayBuffer transfer: https://github.com/tc39/proposal-arraybuffer-transfer

[5] Import Assertions: https://github.com/tc39/proposal-import-assertions

[6] Intl era/monthCode: https://github.com/tc39/proposal-intl-era-monthcode

[7] Symbol Predicates: https://github.com/tc39/proposal-symbol-predicates

[8] Async Context: https://github.com/tc39/proposal-async-context

[9] Proto pollution mitigation: https://github.com/syg/proposal-symbol-proto

往期推荐:

责任编辑:武晓燕 来源: 前端充电宝
相关推荐

2023-04-26 07:30:00

promptUI非结构化

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循环GolangGo

2022-10-08 00:00:05

SQL机制结构

2023-08-10 08:28:46

网络编程通信

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

数据安全API

2023-06-30 08:18:51

敏捷开发模式

2023-09-10 21:42:31

2023-03-07 07:05:29

生产数据库运维

2021-07-31 11:40:55

Openresty开源

2022-02-14 07:03:31

网站安全MFA

2022-11-12 12:33:38

CSS预处理器Sass

2022-10-28 07:27:17

Netty异步Future

2023-12-28 09:55:08

队列数据结构存储

2022-01-04 12:08:46

设计接口

2022-04-06 08:23:57

指针函数代码

2022-06-26 09:40:55

Django框架服务

2023-07-27 07:46:51

SAFe团队测试

2024-02-26 00:00:00

Go性能工具
点赞
收藏

51CTO技术栈公众号