全网最全 ECMAScript 攻略

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作为前端开发工程师,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ES6","attrs":{}},{"type":"text","text":" 这个词想必不陌生,对","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ECMAScript","attrs":{}},{"type":"text","text":" 这个奇怪发音的名字也应该有所了解,你是否好奇过 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ECMA","attrs":{}},{"type":"text","text":" 世界的神秘数字代号,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ECMA262","attrs":{}},{"type":"text","text":" 是什么,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ESxxx","attrs":{}},{"type":"text","text":" 又是什么,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"TC39","attrs":{}},{"type":"text","text":" 是什么,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Stage 3","attrs":{}},{"type":"text","text":" 、","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Stage 4","attrs":{}},{"type":"text","text":" 又意味着什么?你是否被层出不穷的 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ES20XX","attrs":{}},{"type":"text","text":" 新特性所迷惑,需要掌握该特性到底是哪年推出的吗,这些提案在哪里能够看到,哪些已经可用,历年的 ES 标准去哪里查找?今天我来带大家揭开 ECMAScript 的神秘面纱,彻底理解掌握这些神秘代号,以及截止到 2021 年 ECMAScript 的特性。","attrs":{}}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另:祝贺","attrs":{}},{"type":"link","attrs":{"href":"https://www.toutiao.com/i6950609447534412327","title":"","type":null},"content":[{"type":"text","text":"我国首个 JS 语言提案在 ECMA 进入 Stage 3","attrs":{}}]},{"type":"text","text":"。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"ECMAScript 历史","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们首先来看 ECMA 是什么。","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ECMA","attrs":{}},{"type":"text","text":",读音类似“埃科妈”,是","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"欧洲计算机制造商协会","attrs":{}},{"type":"text","text":"(European Computer Manufacturers Association)的简称,是一家国际性会员制度的信息和电信标准组织。1994 年之后,由于组织的标准牵涉到很多其他国家,为了体现其国际性,更名为 ","attrs":{}},{"type":"link","attrs":{"href":"https://www.ecma-international.org/","title":"","type":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Ecma 国际","attrs":{}}]},{"type":"text","text":"(Ecma International),因此 Ecma 就不再是首字母缩略字了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/2c/2c5b219c3cca7d0ff354dc6098866ee9.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"了解了这段历史,为了技术写的专业性,如果文章中提到 Ecma 的时候,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"可以写成 Ecma 或者 ecma,不要写成 ECMA","attrs":{}},{"type":"text","text":",除非是 ECMAScript 或 ECMA-XXX 这类专有名词。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1995 年,著名的网景公司(Netscape)的 ","attrs":{}},{"type":"link","attrs":{"href":"https://zh.wikipedia.org/wiki/%E5%B8%83%E8%98%AD%E7%99%BB%C2%B7%E8%89%BE%E5%85%8B","title":"","type":null},"content":[{"type":"text","text":"Brendan Eich","attrs":{}}]},{"type":"text","text":" 开发了一种脚本语言,最初命名为 Mocha,后来改名为 LiveScript,最后为了蹭当时火热的 Java 热度重命名为了 JavaScript。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"了解了 Ecma 国际和 JavaScript,就方便了解 ECMAScript 了,ECMAScript 是一种由 Ecma 国际在标准 ECMA-262 中定义的 ","attrs":{}},{"type":"link","attrs":{"href":"https://zh.wikipedia.org/wiki/%E8%84%9A%E6%9C%AC%E8%AF%AD%E8%A8%80","title":"","type":null},"content":[{"type":"text","text":"脚本语言","attrs":{}}]},{"type":"text","text":" 规范。这种语言在往往被称为 ","attrs":{}},{"type":"link","attrs":{"href":"https://zh.wikipedia.org/wiki/JavaScript","title":"","type":null},"content":[{"type":"text","text":"JavaScript","attrs":{}}]},{"type":"text","text":" 或 ","attrs":{}},{"type":"link","attrs":{"href":"https://zh.wikipedia.org/wiki/JScript","title":"","type":null},"content":[{"type":"text","text":"JScript","attrs":{}}]},{"type":"text","text":" ,但实际上 JavaScript 和 JScript 是 ECMA-262 标准的实现和扩展。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"神秘的 ECMA-262","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上文提到了第一个神秘代码 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ECMA-262","attrs":{}},{"type":"text","text":",ECMA-262 到底是什么呢?原来 Ecma 国际的标准,都会以 Ecma-Number 命名,ECMA-262 就是 ECMA 262 号标准,具体就是","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"指 ECMAScript 遵照的标准","attrs":{}},{"type":"text","text":"。1996 年 11 月,网景公司将 JavaScript 提交给 Ecma 国际进行标准化。ECMA-262 的第一个版本于 1997 年 6 月被 Ecma 国际采纳。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"尽管 JavaScript 和 JScript 与 ECMAScript 兼容,但包含超出 ECMAScript 的功能。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们如何查看最新最全的 Ecma 标准呢,可以查看 Ecma 国际官网的 ","attrs":{}},{"type":"link","attrs":{"href":"https://www.ecma-international.org/publications-and-standards/standards/","title":"","type":null},"content":[{"type":"text","text":"Standards","attrs":{}}]},{"type":"text","text":"。截止到 2021 年 4 月,最新的 Ecma 标准已经到了 ","attrs":{}},{"type":"link","attrs":{"href":"https://www.ecma-international.org/publications-and-standards/standards/ecma-418/","title":"","type":null},"content":[{"type":"text","text":"ECMA-418","attrs":{}}]},{"type":"text","text":"。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/c7/c767f433a447d2a9a40a8f3b51587ab6.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Ecma 标准涉及的类别非常多,官网因此提供了按照类别和最新修改排序的功能,我们来看看 ECMA-262 属于哪个类别:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/94/94351020c3be56530fad122d2c489aa0.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ECMA-262 属于“软件工程与接口”类别","attrs":{}},{"type":"text","text":",该类别一共有 12 个标准,详见上图。注意,ECMA-262 的最新更新日期是 2020 年 6 月,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"并且会在今年 6 月进行更新,更新之后,ES2021 就会成为 ECMA 标准。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"探秘 Ecma TC39 神秘组织","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"揭开了 Ecma-262 神秘面纱之后,我们来探秘一个代号名为 ","attrs":{}},{"type":"link","attrs":{"href":"https://www.ecma-international.org/technical-committees/tc39/","title":"","type":null},"content":[{"type":"text","text":"TC39","attrs":{}}]},{"type":"text","text":" 的神秘组织。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/c0/c0dcdc5df176d30a99734df3bcc32ea4.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其实官网解释的已经很清楚了,我用中文简要概括下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 是 Technical Committee 39 的简称,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"是制定 ECMAScript 标准的委员会","attrs":{}},{"type":"text","text":",由各个主流浏览器厂商的代表构成,主席团三人分别来自 PayPal、Bloomberg 和 Microsoft,下设两个工作组(task group) ","attrs":{}},{"type":"link","attrs":{"href":"https://www.ecma-international.org/task-groups/tc39-tg1/","title":"","type":null},"content":[{"type":"text","text":"TC39-TG1","attrs":{}}]},{"type":"text","text":" 和 ","attrs":{}},{"type":"link","attrs":{"href":"https://www.ecma-international.org/task-groups/tc39-tg2/","title":"","type":null},"content":[{"type":"text","text":"TC39-TG2","attrs":{}}]},{"type":"text","text":" 。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39-TG1 工作组主要工作是通用 ECMAScript® 语言, 包括语法、语义、类库以及支持该语言的技术。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39-TG2 工作组 ECMAScript® 国际化 API 标准。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们经常会看到类似的新闻:XX 公司成为 Ecma TC39 成员。想要加入 TC39 会议,必须先成为 Ecma 会员:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/c2/c2d3923f0caad7a0476d4886ba089d38.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那 Ecma 到底有哪些成员呢?","attrs":{}},{"type":"link","attrs":{"href":"https://www.ecma-international.org/about-ecma/members/","title":"","type":null},"content":[{"type":"text","text":"Ecma 官网","attrs":{}}]},{"type":"text","text":"给出了答案:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/8f/8f94153ee4814107b4ebd5f32362d25a.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"几大巨头赫然在列!看到这里,发现一共有 5 种类别,分别是 Ordinary members、Associate members、SME members、SPC members、NFP members,我们来看 Ordinary members 和 Associate members 的对比:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/c8/c8682feebbaf39da39ad25bd50ec1f1b.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Associate members 没有 Ecma 大会(General Assembly)的投票权","attrs":{}},{"type":"text","text":"!在 Associate members 中,我国的阿里巴巴、华为、腾讯、360 赫然在列。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Wait,CHF 70000,这是 70000 法郎?Ecma 果然是欧洲豪门,顶级会员年费接近 50 万人民币。算了一下 Ecma 国际会员费收入每年就有 1,134,000 法郎,约 800 万人民币。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/55/554d64b0ea30107fe5e92f0944d47a65.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"了解更多关于 TC39 的内容,可以探索其官网 ","attrs":{}},{"type":"link","attrs":{"href":"https://tc39.es/","title":"","type":null},"content":[{"type":"text","text":"TC39 – Specifying JavaScript.","attrs":{}}]},{"type":"text","text":" 和 GitHub 仓库 ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39","title":"","type":null},"content":[{"type":"text","text":"Ecma TC39 · GitHub","attrs":{}}]},{"type":"text","text":",","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"注意这个仓库很重要","attrs":{}},{"type":"text","text":"。查看一下 members,发现了 ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/akira-cn","title":"","type":null},"content":[{"type":"text","text":"月影","attrs":{}}]},{"type":"text","text":"、","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/cncuckoo","title":"","type":null},"content":[{"type":"text","text":"李松峰","attrs":{}}]},{"type":"text","text":" 和 ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/yuanyan","title":"","type":null},"content":[{"type":"text","text":"元彦","attrs":{}}]},{"type":"text","text":" 三位国内大佬。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"我们熟悉的 ES6","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"探究完神秘的 ECMA-262 和 TC39 之后,我们缓口气,来看看我们最为熟悉的 ESX 家族。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上文提到 ECMAScript 是由 Ecma 国际在标准 ECMA-262 中定义的脚本语言规范。","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"到 2015 年,一共发布了 1、2、3、4、5、5.1、6 共 7 个版本","attrs":{}},{"type":"text","text":"(其中 4 被废弃)。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们常把 5.1 之前的 ECMAScript 版本统称做 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ES5","attrs":{}},{"type":"text","text":",将 6 版本之后的版本统称做 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"ES6","attrs":{}},{"type":"text","text":"(因为从 2015 年起,ECMAScript 终于步入正轨,每年发布一次版本,到了 2021 年,已经发布了 6 个版本了,实在太多,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"所以用变革了 JavaScript 时代的 ES6 作为后续版本的代称","attrs":{}},{"type":"text","text":")。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"划重点,Web 前端招聘的 JD 中,经常出现的 ES6,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"不仅仅是 ES2015 这个版本,而是指代 ES2015 和其后每年发布的 ECMAScript 版本","attrs":{}},{"type":"text","text":"。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"从 ECMAScript 第 6 版开始,每年发布一个 ECMAScript 版本,因此 ECMAScript 版本有了很多名字,包括全名 ECMAScript 6、简写 ES6、年份命名 ECMAScript 2015、年份简写 ES2015。最常见的名字还是 ES6,之后推出的 ES7、ES8 等同理。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/cb/cbba606be56a1e8dd9cc5ff5cc8d7269.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"需要注意的是,自从 ","attrs":{}},{"type":"link","attrs":{"href":"https://exploringjs.com/impatient-js/ch_history.html#tc39-process","title":"","type":null},"content":[{"type":"text","text":"TC39 进程","attrs":{}}]},{"type":"text","text":" 制定以来,ECMAScript 版本的重要性就降低了很多。大家不必记住某一个 ES 特性到底是哪年推出的。现在真正重要的是提案处于哪个阶段:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"一旦提案到了第 4 阶段,那么它就可以使用了","attrs":{}},{"type":"text","text":"。但是即使这样,你仍然需要检查你的引擎是否支持该功能。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"这里又提到了一个 ","attrs":{}},{"type":"link","attrs":{"href":"https://exploringjs.com/impatient-js/ch_history.html#tc39-process","title":"","type":null},"content":[{"type":"text","text":"TC39 进程","attrs":{}}]},{"type":"text","text":" 和阶段(Stage)的概念,我们接下来看看这两个概念是什么含义。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"TC39 进程和 Stage X","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://exploringjs.com/impatient-js/ch_history.html#tc39-process","title":"","type":null},"content":[{"type":"text","text":"TC39 进程","attrs":{}}]},{"type":"text","text":" 故名思义,肯定是 TC39 组织发布的一个进程。随着 ECMAScript 6 的发布,当时的发布流程出现了两个明显的问题:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果在两个 release 之间多次通过早已准备好的功能,势必在其 release 之前等待很长一段时间。而且功能准备如果很晚,会增加 deadline 之前匆忙赶工的风险。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"很多功能在其实现和使用之前就花了很长时间在设计上,发现与实现和使用相关的设计缺陷会非常晚。","attrs":{}}]}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"为了解决上述问题, TC39 建立了新的 TC39 进程:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"ECMAScript 功能设计与每年的 ECMAScript 版本发布独立,使用不同阶段(Stage)来区分功能的状态,共 5 个阶段,从 Stage 0(strawman)开始,到 Stage 4 (finished)结束。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"越往后的阶段,需要原型实现和真机测试,可以建立设计和实现之间的反馈机制。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"ECMAScript 版本","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"每年发布一次","attrs":{}},{"type":"text","text":",发布的内容包含在 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"release deadline","attrs":{}},{"type":"text","text":" 之前的全部到达 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Stage 4","attrs":{}},{"type":"text","text":" 的功能。","attrs":{}}]}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/79/792d8c2a1435fa11b33b676561c57a34.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Stage 0:代号“稻草人(strawman)”,草案阶段","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Stage 1:代号“提案(proposal)”, TC39 帮助阶段","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Stage 2:代号“提案(draft)”, 本阶段很有可能成为标准","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Stage 3:代号“候选(candidate)”, 已完成,需要从实现中获得反馈","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Stage 4:代号“结束(finished)”, 准备成为标准","attrs":{}}]}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"理解了 Stage 各阶段的含义,就能理解","attrs":{}},{"type":"link","attrs":{"href":"https://www.toutiao.com/i6950609447534412327","title":"","type":null},"content":[{"type":"text","text":"我国首个 JS 语言提案在 ECMA 进入 Stage 3","attrs":{}}]},{"type":"text","text":"这个新闻的意义了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如何查看各阶段的提案呢?可以查阅 ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/ecma262/","title":"","type":null},"content":[{"type":"text","text":"GitHub - tc39/ecma262: Status, process, and documents for ECMA-262","attrs":{}}]},{"type":"text","text":" 这个 repo。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"历届 ES 特性全收录 ES2016 - ES2022","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"网上有太多零散的 ES 特性总结,很多同学想知道,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"有官方的 ECMAScript 功能列表吗","attrs":{}},{"type":"text","text":"?","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"当然有,TC39 仓库列出了 ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/proposals/blob/master/finished-proposals.md","title":"","type":null},"content":[{"type":"text","text":"已完成提案","attrs":{}}]},{"type":"text","text":" 以及它们的版本。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"虽然 6 年过去,但是新增的 ES 功能其实并不多,截至 2021 年 4 月 23 日,包括草案的功能,","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"一共 39 个","attrs":{}},{"type":"text","text":":","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"ES2016","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-Array.prototype.includes","title":"","type":null},"content":[{"type":"text","text":"Array.prototype.includes","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Domenic Denicola","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Domenic Denicola、Rick Waldron","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2015-11/nov-17.md#arrayprototypeincludes","title":"","type":null},"content":[{"type":"text","text":"November 2015","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2016","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-exponentiation-operator","title":"","type":null},"content":[{"type":"text","text":"Exponentiation operator","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Rick Waldron","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Rick Waldron","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2016-01/jan-28.md#5xviii-exponentiation-operator-rw","title":"","type":null},"content":[{"type":"text","text":"January 2016","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2016","attrs":{}}]}]}],"attrs":{}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"ES2017","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-object-values-entries","title":"","type":null},"content":[{"type":"text","text":"Object.values/Object.entries","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2016-03/march-29.md#objectvalues--objectentries","title":"","type":null},"content":[{"type":"text","text":"March 2016","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2017","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-string-pad-start-end","title":"","type":null},"content":[{"type":"text","text":"String padding","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Jordan Harband、Rick Waldron","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2016-05/may-25.md#stringprototypepadstartend-jhd","title":"","type":null},"content":[{"type":"text","text":"May 2016","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2017","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-object-getownpropertydescriptors","title":"","type":null},"content":[{"type":"text","text":"Object.getOwnPropertyDescriptors","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Jordan Harband、Andrea Giammarchi","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Jordan Harband、Andrea Giammarchi","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录:","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2016-05/may-25.md#objectgetownpropertydescriptors-jhd","title":"","type":null},"content":[{"type":"text","text":"May 2016","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2017","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-trailing-function-commas","title":"","type":null},"content":[{"type":"text","text":"Trailing commas in function parameter lists and calls","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Jeff Morrison","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Jeff Morrison","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2016-07/jul-26.md#9ie-trailing-commas-in-functions","title":"","type":null},"content":[{"type":"text","text":"July 2016","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2017","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-async-await","title":"","type":null},"content":[{"type":"text","text":"Async functions","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Brian Terlson","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Brian Terlson","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录:","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2016-07/jul-28.md#10iv-async-functions","title":"","type":null},"content":[{"type":"text","text":"July 2016","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2017","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/ecmascript_sharedmem","title":"","type":null},"content":[{"type":"text","text":"Shared memory and atomics","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Lars T Hansen","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Lars T Hansen","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2017-01/jan-24.md#13if-seeking-stage-4-for-sharedarraybuffer","title":"","type":null},"content":[{"type":"text","text":"January 2017","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2017","attrs":{}}]}]}],"attrs":{}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"ES2018","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-template-literal-revision","title":"","type":null},"content":[{"type":"text","text":"Lifting template literal restriction","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Tim Disney","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Tim Disney","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2017-03/mar-21.md#10ia-template-literal-updates","title":"","type":null},"content":[{"type":"text","text":"March 2017","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2018","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-regexp-dotall-flag","title":"","type":null},"content":[{"type":"text","text":"s (dotAll) flag for regular expressions","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Brian Terlson、Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2017-11/nov-28.md#9ie-regexp-dotall-status-update","title":"","type":null},"content":[{"type":"text","text":"November 2017","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2018","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-regexp-named-groups","title":"","type":null},"content":[{"type":"text","text":"RegExp named capture groups","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Gorkem Yakin、Daniel Ehrenberg","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Daniel Ehrenberg、Brian Terlson、Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2017-11/nov-28.md#9if-regexp-named-captures-status-update","title":"","type":null},"content":[{"type":"text","text":"November 2017","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2018","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-object-rest-spread","title":"","type":null},"content":[{"type":"text","text":"Rest/Spread Properties","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Sebastian Markbåge","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Sebastian Markbåge","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2018-01/jan-23.md#restspread-properties-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"January 2018","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2018","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-regexp-lookbehind","title":"","type":null},"content":[{"type":"text","text":"RegExp Lookbehind Assertions","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Gorkem Yakin、Nozomu Katō、Daniel Ehrenberg","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Daniel Ehrenberg、Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2018-01/jan-23.md#conclusionresolution-16","title":"","type":null},"content":[{"type":"text","text":"January 2018","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2018","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-regexp-unicode-property-escapes","title":"","type":null},"content":[{"type":"text","text":"RegExp Unicode Property Escapes","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Brian Terlson、Daniel Ehrenberg、Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2018-01/jan-24.md#conclusionresolution-1","title":"","type":null},"content":[{"type":"text","text":"January 2018","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2018","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-promise-finally","title":"","type":null},"content":[{"type":"text","text":"Promise.prototype.finally","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录 :","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2018-01/jan-24.md#conclusionresolution-2","title":"","type":null},"content":[{"type":"text","text":"January 2018","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2018","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-async-iteration","title":"","type":null},"content":[{"type":"text","text":"Asynchronous Iteration","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录 :","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2018-01/jan-24.md#conclusionresolution-2","title":"","type":null},"content":[{"type":"text","text":"January 2018","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2018","attrs":{}}]}]}],"attrs":{}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"ES2019","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-optional-catch-binding","title":"","type":null},"content":[{"type":"text","text":"Optional catch binding","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Michael Ficarra","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Michael Ficarra","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录 : ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2018-05/may-22.md#conclusionresolution-7","title":"","type":null},"content":[{"type":"text","text":"May 2018","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2019","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-json-superset","title":"","type":null},"content":[{"type":"text","text":"JSON superset","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Richard Gibson","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Mark Miller、Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2018-05/may-22.md#conclusionresolution-8","title":"","type":null},"content":[{"type":"text","text":"May 2018","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2019","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-Symbol-description","title":"","type":null},"content":[{"type":"text","text":"Symbol.prototype.description","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Michael Ficarra","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Michael Ficarra","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-27.md#conclusionresolution-12","title":"","type":null},"content":[{"type":"text","text":"November 2018","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2019","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/Function-prototype-toString-revision","title":"","type":null},"content":[{"type":"text","text":"Function.prototype.toString revision","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Michael Ficarra","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Michael Ficarra","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录:","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-27.md#conclusionresolution-13","title":"","type":null},"content":[{"type":"text","text":"November 2018","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2019","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-object-from-entries","title":"","type":null},"content":[{"type":"text","text":"Object.fromEntries","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Darien Maillet Valentine","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Jordan Harband、Kevin Gibbons","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录:","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-01/jan-29.md#objectfromentries-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"January 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2019","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-well-formed-stringify","title":"","type":null},"content":[{"type":"text","text":"Well-formed JSON.stringify","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Richard Gibson","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-01/jan-29.md#well-formed-jsonstringify-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"January 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2019","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-string-left-right-trim","title":"","type":null},"content":[{"type":"text","text":"String.prototype.{trimStart,trimEnd}","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Sebastian Markbåge","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Sebastian Markbåge、Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-01/jan-29.md#stringprototypetrimstarttrimend-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"January 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2019","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-flatMap","title":"","type":null},"content":[{"type":"text","text":"Array.prototype.{flat,flatMap}","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Brian Terlson、Michael Ficarra、Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Brian Terlson、Michael Ficarra","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-01/jan-29.md#arrayprototypeflatflatmap-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"January 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2019","attrs":{}}]}]}],"attrs":{}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"ES2020","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-string-matchall","title":"","type":null},"content":[{"type":"text","text":"String.prototype.matchAll","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-03/mar-26.md#stringprototypematchall-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"March 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2020","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-bigint","title":"","type":null},"content":[{"type":"text","text":"BigInt","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Daniel Ehrenberg","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Daniel Ehrenberg","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-06/june-4.md#bigint-to-stage-4","title":"","type":null},"content":[{"type":"text","text":"June 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2020","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-promise-allSettled","title":"","type":null},"content":[{"type":"text","text":"Promise.allSettled","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Jason Williams、Robert Pamely、Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-07/july-24.md#promiseallsettled","title":"","type":null},"content":[{"type":"text","text":"July 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2020","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-global","title":"","type":null},"content":[{"type":"text","text":"globalThis","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Jordan Harband","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-10/october-1.md#globalthis-to-stage-4","title":"","type":null},"content":[{"type":"text","text":"October 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2020","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-for-in-order","title":"","type":null},"content":[{"type":"text","text":"for-in mechanics","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Kevin Gibbons","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Kevin Gibbons","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#for-in-order-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"December 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2020","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-optional-chaining","title":"","type":null},"content":[{"type":"text","text":"Optional Chaining","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Gabriel Isenberg、Claude Pache、Dustin Savery","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Gabriel Isenberg、Dustin Savery、Justin Ridgewell、Daniel Rosenwasser","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#optional-chaining-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"December 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2020","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-nullish-coalescing","title":"","type":null},"content":[{"type":"text","text":"Nullish coalescing Operator","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Gabriel Isenberg","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Gabriel Isenberg、Justin Ridgewell、Daniel Rosenwasser","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录:","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#nullish-coalescing-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"December 2019","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2020","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-import-meta","title":"","type":null},"content":[{"type":"text","text":"import.meta","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Domenic Denicola","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Gus Caplan","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2020-03/april-1.md#importmeta-for-stage-4-continued-from-previous-day","title":"","type":null},"content":[{"type":"text","text":"March 2020","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"发布时间:2020","attrs":{}}]}]}],"attrs":{}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"ES2021","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-string-replaceall","title":"","type":null},"content":[{"type":"text","text":"String.prototype.replaceAll","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Peter Marshall、Jakob Gruber、Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2020-06/june-2.md#stringprototypereplaceall-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"June 2020","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"预计发布时间:2021","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-promise-any","title":"","type":null},"content":[{"type":"text","text":"Promise.any","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Mathias Bynens、Kevin Gibbons、Sergey Rubanov","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Mathias Bynens","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2020-07/july-21.md#promiseany--aggregateerror-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"July 2020","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"预计发布时间:2021","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-weakrefs","title":"","type":null},"content":[{"type":"text","text":"WeakRefs","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Dean Tribble、Sathya Gunasekaran","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Dean Tribble、Mark Miller、Till Schneidereit、Sathya Gunasekaran、Daniel Ehrenberg","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2020-07/july-21.md#weakrefs-for-stage-4--cleanupsome-for-stage-23","title":"","type":null},"content":[{"type":"text","text":"July 2020","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"预计发布时间:2021","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-logical-assignment","title":"","type":null},"content":[{"type":"text","text":"Logical Assignment Operators","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Justin Ridgewell","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Justin Ridgewell、Hemanth HM","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2020-07/july-21.md#logical-assignment-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"July 2020","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"预计发布时间:2021","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-numeric-separator","title":"","type":null},"content":[{"type":"text","text":"Numeric separators","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Sam Goto、Rick Waldron","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Sam Goto、Rick Waldron、Leo Balter","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录: ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/notes/blob/master/meetings/2020-07/july-21.md#numericliteralseparator-for-stage-4","title":"","type":null},"content":[{"type":"text","text":"July 2020","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"预计发布时间:2021","attrs":{}}]}]}],"attrs":{}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"ES2022","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Class Fields ( ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-private-methods","title":"","type":null},"content":[{"type":"text","text":"Private instance methods and accessors","attrs":{}}]},{"type":"text","text":" , ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-class-fields","title":"","type":null},"content":[{"type":"text","text":"Class Public Instance Fields & Private Instance Fields","attrs":{}}]},{"type":"text","text":" , ","attrs":{}},{"type":"link","attrs":{"href":"https://github.com/tc39/proposal-static-class-features","title":"","type":null},"content":[{"type":"text","text":"Static class fields and private static methods","attrs":{}}]},{"type":"text","text":" )","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:Daniel Ehrenberg","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"维护者:Daniel Ehrenberg、Kevin Gibbons","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TC39 会议记录:April 2021","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"预计发布时间:2022","attrs":{}}]}]}],"attrs":{}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"结语","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"授人以鱼,不如授人以渔","attrs":{}},{"type":"text","text":",希望通过本文追根溯源,带领同学们走进 ECMAScript 的世界,ES 神秘代码不再神秘,ES 新特性不再彷徨。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我是清秋,一个有着教师梦的 Web 前端非典型程序员。公众号 ","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Frontend Radio","attrs":{}},{"type":"text","text":" 刚刚起步,期待我的文章能够帮助到更多同学,让我们一起成长,早日成为 Frontend Master。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"参考资料","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://zh.wikipedia.org/wiki/Ecma%E5%9B%BD%E9%99%85","title":"","type":null},"content":[{"type":"text","text":"Ecma国际 - 维基百科,自由的百科全书","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://exploringjs.com/impatient-js/ch_history.html","title":"","type":null},"content":[{"type":"text","text":"History and evolution of JavaScript","attrs":{}}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://juejin.cn/post/6939061526154182686","title":"","type":null},"content":[{"type":"text","text":"【译】ECMAScript 2021: 最终功能集确定","attrs":{}}]}]}]}],"attrs":{}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章