<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 1. TC39 處理 ECMAScript 新特性的工作流程 本章解釋了所謂的 TC39 過程,該流程從ECMAScript 2016(ES7)開始管理著 ECMAScript 特性的設計。 ## 1.1 誰設計ECMAScript? 答:TC39(技術委員會39)。 [TC39](http://www.ecma-international.org/memento/TC39.htm) 是發展 JavaScript 的委員會。它的成員都是公司(包括所有主要的瀏覽器供應商)。[TC39定期舉行會議](http://www.ecma-international.org/memento/TC39-M.htm),會議由會員派代表和受邀專家參加。會議記錄可以在[網上找到](https://github.com/tc39/tc39-notes),可以讓您更好地了解TC39是如何工作的。 有時(即使在本書中),您也會看到 TC39 成員一詞指的是某個人。也就是指的:TC39 成員公司派遣的代表。 有趣的是,TC39 是以協商一致方式運作的:決策要求絕大多數人都同意,沒有人強烈反對才能否決。 對于許多成員而言,協議帶來了真正的義務(他們必須實施功能等)。 ## 1.2 ECMAScript是如何設計的? ### 1.2.1 問題:ECMAScript 2015(ES6)版本太大 ECMAScript 的最新版本 ES6 很大,,而且是在ES5的6年后標準化的(2009年12月 vs 2015年6月)。在兩次發布之間花費大量時間存在兩個主要問題: * 比發行版早準備好的特性必須等到發行版完成。 * 那些需要很長時間才能完成的特性會承受很大的壓力,因為將它們推遲到下一個發布版本將意味著很長的等待。這些特性也可能會推遲發布。 因此,從ECMAScript 2016(ES7)開始,發布的頻率將會更高,因此發布的版本也會更小。每年將發布一個版本,它將包含在每年最后期限前完成的所有特性。 ### 1.2.2 解決方案:TC39過程 ECMAScript特性的每個提案都要經歷以下幾個成熟階段,從階段0開始。從一個階段到下一個階段的進展必須得到TC39的批準。 #### 1.2.2.1 階段0:strawman **它是什么**?為 ECMAScript 的發展提供一種自由的提交想法的方式。提交者必須是TC39成員或[已注冊為TC39貢獻者](http://www.ecma-international.org/memento/contribute_TC39_Royalty_Free_Task_Group.php)的非成員。 **需要什么**?該文檔必須在TC39會議上進行審核([來源](https://github.com/tc39/ecma262/blob/master/FAQ.md)),然后將其添加到[帶有階段0提案的頁面](*https://github.com/tc39/ecma262/blob/master/stage0.md**)中。 #### 1.2.2.2 階段1:proposal **它是什么**?該特性的正式提案。 **需要什么?** 必須確定負責該提案的所謂擁護者(*champion*)。 擁護者或聯合擁護者必須是 TC39 的成員([來源](https://github.com/tc39/ecma262/blob/master/FAQ.md))。 提案解決的問題必須以散文形式描述。解決方案必須通過示例,API 以及語義和算法的討論來描述解決方案。 最后,必須確定提案的潛在障礙,例如與其他特征的相互作用和實施挑戰。 在實現方面,需要 polyfill 和演示。 **下一步是什么**? 通過接受階段1的提案,TC39 宣布愿意審查,討論并為該提案做出貢獻。 展望未來,有望對該提案進行重大更改。 #### 1.2.2.3 階段2:draft **它是什么**?規范中內容的第一個版本。在這一點上,該特性可能最終包含在標準中。 **需要什么**? 現在,該提案還必須對該特性的語法和語義進行正式描述(使用 ECMAScript 規范的正式語言)描述應該盡可能完整,但是可以包含待辦事項和占位符。 需要對該特性進行兩個實驗性的實現,但是其中一個可以在諸如Babel 的編譯器中進行實現。 **下一步是什么**? 從現在開始,只會進行預期增量更改。 #### 1.2.2.4 階段3:candidate **它是什么**? 該提案大部分已經完成,現在需要實現和用戶的反饋來進一步推進。 **需要什么**? 規范文本必須完整。 指定的審閱者(由 TC39 任命,而不由 擁護者任命)和 ECMAScript 規范編輯者必須在規范文本上簽字。 必須至少有兩個符合規范的實現(默認情況下不必啟用)。 **下一步是什么**? 從今以后,僅應針對實現及其使用引起的關鍵問題進行更改。 #### 1.2.2.5 階段4:finished **它是什么**? 該提案已準備好包含在標準中。 **需要什么**? 提案到達此階段需要做以下事情: * [測試 262](https://github.com/tc39/test262) 驗收測試(大致來說,是用 JavaScript 編寫的語言功能單元測試)。 * 通過測試的兩個符合規范的運輸實現。 * 具有豐富的實踐經驗。 * ECMAScript 規范編輯器必須在規范文本上簽名。 **下一步是什么**? 該提案將盡快包含在 ECMAScript 規范中。當規范作為標準經過每年一次的批準時,提案也被批準為標準的一部分。 ## 1.3 不要稱它們為ECMAScript 20xx功能 如您所見,您只能確保在其提案達到第4階段后就將其包含在標準中。然后下一個 ECMAScrip t版本很可能包含它,但也不是100%確定(可能需要更長的時間)。 因此,您將無法再調用提案(例如)“ ES7 功能”或“ ES2016 功能”。 因此,我最喜歡的兩種撰寫文章和博客文章標題的方式是: * “ ECMAScript建議:foo 功能”。在本文的開頭提到了提案的階段。 * “ ES.stage2:foo 功能” 如果提案處于第4階段,我可以把它稱為 ES20xx 特性,但是最安全的做法是等到規范編輯器確認它將包含在哪個版本中。`Object.observe`是 ECMAScript 提案的一個例子,它一直進展到第2階段,但最終被撤回。 ## 1.4 進一步閱讀 以下是本章的重要來源: * [The ecma262 (ECMA-262 is the ID of the ECMAScript standard) GitHub repository](https://github.com/tc39/ecma262), which contains: * [A readme file with all proposals at stage 1 or higher](https://github.com/tc39/ecma262/blob/master/README.md) * [A list of stage 0 proposals](https://github.com/tc39/ecma262/blob/master/stage0.md) * [ECMA-262 frequently asked questions](https://github.com/tc39/ecma262/blob/master/FAQ.md) * [The TC39 process document](https://tc39.github.io/process-document/) 其他需要閱讀的東西: * [Kangax 的 ES7 兼容性表](https://kangax.github.io/compat-table/es7/)顯示了支持哪些提案,并按階段將提案分組。 * 有關 ES6 設計過程的更多信息:《Exploring ES6》中的 [“如何設計ECMAScript 6”](http://exploringjs.com/es6/ch_about-es6.html#_how-ecmascript-6-was-designed)部分 # 2. FAQ: ES2016 and ES2017 ## 2.1 ECMAScript 2016 會不會太小? ES2016如此之小,表明新的發行過程(如上一章所述)有效: * 只有在新功能完全準備好并且至少有兩個經過充分的實際測試之后,才會包含這些新特性。 * 發布的頻率更頻繁(一年一次),并且可以增加增量。 ES2016將給每個人(TC39,引擎實現者,JS開發者)喘息的時間,這是在發布大量 ES6 之后受歡迎的休息。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看