給急躁的程式設計師的 JavaScript(ES2022 版)
請支持這本書:購買捐款
(廣告,請不要封鎖。)

3 JavaScript 的歷史與演進



3.1 JavaScript 的誕生

JavaScript 於 1995 年 5 月由 Brendan Eich 在 10 天內創建。Eich 在 Netscape 工作,並為其網路瀏覽器《Netscape Navigator》實作 JavaScript。

當時的想法是,客戶端網路的主要互動部分將以 Java 實作。JavaScript 應該作為這些部分的膠水語言,並讓 HTML 變得更具互動性。由於 JavaScript 協助 Java,因此它必須看起來像 Java。這排除了 Perl、Python、TCL 等現有解決方案。

最初,JavaScript 的名稱變更了幾次

3.2 JavaScript 的標準化

JavaScript 有兩個標準

這些標準所描述的語言稱為《ECMAScript》,而非《JavaScript》。之所以選擇不同的名稱,是因為 Sun(現為 Oracle)擁有後者的商標。而「ECMA」在「ECMAScript」中來自主辦主要標準的組織。

該組織的原名為ECMA,是歐洲電腦製造商協會(European Computer Manufacturers Association)的縮寫。後來由於組織的活動已擴展到歐洲以外,因此更名為Ecma International(「Ecma」是一個專有名詞,而非縮寫)。最初的全大寫縮寫說明了 ECMAScript 的拼寫。

原則上,JavaScript 和 ECMAScript 的意思相同。有時會做出以下區分

因此,ECMAScript 6是該語言的一個版本(其第 6 版)。

3.3 ECMAScript 版本的時間表

這是 ECMAScript 版本的簡要時間表

3.4 Ecma 技術委員會 39(TC39)

TC39 是負責 JavaScript 演進的委員會。嚴格來說,其成員是公司:Adobe、Apple、Facebook、Google、Microsoft、Mozilla、Opera、Twitter 等。也就是說,通常是激烈競爭的公司為了這門語言的利益而共同努力。

TC39 每兩個月舉行一次會議,由成員指定的代表和受邀專家參加。這些會議的記錄公開在GitHub 儲存庫中。

3.5 TC39 流程

有了 ECMAScript 6,當時發布流程出現的兩個問題變得明顯

為了應對這些問題,TC39 制定了新的TC39 流程

結果:較小、漸進式的發布,其功能已經過現場測試。圖 1 說明了 TC39 流程。

Figure 1: Each ECMAScript feature proposal goes through stages that are numbered from 0 to 4. Champions are TC39 members that support the authors of a feature. Test 262 is a suite of tests that checks JavaScript engines for compliance with the language specification.

ES2016 是第一個根據 TC39 流程設計的 ECMAScript 版本。

3.5.1 提示:以個別功能和階段思考,而不是 ECMAScript 版本

在 ES6 之前,最常見的是根據 ECMAScript 版本來思考 JavaScript,例如「這個瀏覽器是否支援 ES6?」

從 ES2016 開始,最好以個別功能來思考:一旦某個功能達到第 4 階段,你就可以安全地使用它(如果它受到你鎖定的 JavaScript 引擎支援)。你不需要等到下一個 ECMAScript 發布。

3.6 常見問題:TC39 流程

3.6.1 [我最喜歡的建議功能] 進展如何?

如果你想知道各種建議功能處於哪些階段,請參閱 GitHub 儲存庫提案

3.6.2 是否有 ECMAScript 功能的官方清單?

是的,TC39 儲存庫列出了 已完成的提案,並提到它們在哪些 ECMAScript 版本中引入。

3.7 JavaScript 的演變:不要破壞網路

偶爾會出現一個想法,即透過移除舊功能和怪癖來清理 JavaScript。雖然這個想法的吸引力很明顯,但它有很大的缺點。

假設我們建立一個與舊版本不相容的新版 JavaScript,並修復其所有缺陷。結果,我們會遇到以下問題

那麼解決方案是什麼?我們可以兩全其美嗎?ES6 選擇的方法稱為「一個 JavaScript」

  測驗

請參閱測驗應用程式