ECMAScript 是 JavaScript 的基礎標準,通常簡稱為 ES。探索有關 ECMAScript 及其最新功能的所有內容。

無論你在哪裡讀到關於 JavaScript 的內容,你總會看到這些術語之一:

  • ES3
  • ES5
  • ES6
  • ES7
  • ES8
  • ES2015
  • ES2016
  • ES2017
  • ECMAScript 2015
  • ECMAScript 2016
  • ECMAScript 2017
  • ECMAScript 2018
  • ECMAScript 2019

這些代表什麼意思呢?

它們都指的是 ECMAScript 這個標準

ECMAScript 是JavaScript 的基礎標準,通常簡稱為 ES。

除了 JavaScript,其他的語言也實現了 ECMAScript,包括:

  • ActionScript(Flash 腳本語言),由於 Flash 將於 2020 年正式停用,因此其受歡迎程度不斷下降。
  • JScript(微軟腳本方言),由於當時只有 Netscape 支援 JavaScript,網路瀏覽器戰爭正如火如荼進行中,微軟不得不為 Internet Explorer 建立自己的版本。

但當然最受歡迎和廣泛使用的 ECMAScript 實現是 JavaScript。

為什麼會有這個奇怪的名字?Ecma 国际是一家位於瑞士的標準協會,負責制定國際標準。

當 JavaScript 誕生時,由 Netscape 和 Sun Microsystems 提交給 Ecma,並被命名為 ECMA-262,別名為 ECMAScript

這份由 Netscape 和 Sun Microsystems(Java 的製造商)發布的新聞稿 或許能幫助理解這個名字的選擇,其中可能包含微軟在委員會中涉及的法律和品牌問題,根據維基百科

在 IE9 之後,微軟停止在瀏覽器中將其 ES 支援品牌化為 JScript,並開始稱之為 JavaScript(至少我找不到相關的參考資料)。

因此,在 201x 年,唯一支持 ECMAScript 標準的流行語言就是 JavaScript。

什麼是 TC39?

TC39 是負責發展 JavaScript 的委員會。

TC39 的成員包括參與 JavaScript 和瀏覽器供應商相關公司,其中包括 Mozilla、Google、Facebook、Apple、Microsoft、Intel、PayPal、SalesForce 等等。

每個標準版本提案都必須經過不同階段的審核,詳情可參考這裡

ES 版本

我發現有時候 ES 版本會用編號來表示,有時候會用年份來表示,而且年份有時和編號相差 1,這增加了對於 JavaScript/ECMAScript 的一般混亂感 😄。

在 ES2015 之前,ECMAScript 通常根據版本編號來稱呼。因此,ES5 是指 2009 年發布的 ECMAScript 规范的官方名稱。

為什麼會這樣呢?在導致 ES2015 的過程中,名稱從 ES6 改為 ES2015,但由於這個改動發生得比較晚,人們仍然將其稱為 ES6。

這張表格應該可以稍微解釋清楚一些事情:

版本 官方名稱 發布日期
ES11 ES2020 2020 年夏季?
ES10 ES2019 2019 年夏季
ES9 ES2018 2018 年 6 月
ES8 ES2017 2017 年 6 月
ES7 ES2016 2016 年 6 月
ES6 ES2015 2015 年 6 月
ES5.1 ES5.1 2011 年 6 月
ES5 ES5 2009 年 12 月
ES4 ES4 棄用
ES3 ES3 1999 年 12 月
ES2 ES2 1998 年 6 月
ES1 ES1 1997 年 6 月

ES Next

ES.Next 始終表示 JavaScript 的下一個版本。

所以在撰寫本文時,ES2019 已經發布,ES.Next 將是 ES2020