全網最全 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":{}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章