什么是ECMAScript(來龍去脈娓娓道來)?

什么是ECMAScript(來龍去脈娓娓道來)?

作者:馮天然

鏈接:https://zhuanlan.zhihu.com/p/22557749

來源:知乎

什么是ECMAScript

首先既然要更好的了解,起碼得先說說什么是 ECMAScript。

ECMAScript 是一種由 ECMA國際(前身為歐洲計算機制造商協會)通過 ECMA-262 標準化的腳本程序設計語言。

看起來出現了很多奇怪的名詞,ECMA國際?ECMA-262?黑人問號???

那么然后來稍微介紹一下什么是 ECMA國際。

ECMA國際

Ecma國際(Ecma International)是一家國際性會員制度的信息和電信標準組織。1994年之前,名為歐洲計算機制造商協會(European Computer Manufacturers Association)。因為計算機的國際化,組織的標準牽涉到很多其他國家,因此組織決定改名表明其國際性?,F名稱已不屬于首字母縮略字。

與國家政府標準機構不同,Ecma國際是企業會員制的組織。組織的標準化過程比較商業化,自稱這種營運方式減少官僚追求效果。

上面這些信息都可以在 WIKI 中找到。大家可以很明確的看到,Ecma國際是一家和企業密切相連的組織,所以 Ecma國際制定的規范都是由各類企業來做主要的制定和推廣。

那么既然說到了 Ecma國際,那么它都做了些什么事呢?

其實 Ecma國際負責了很多標準的制定,比如有如下這些規范。大家可以看到這里面有我們今天的主角,ECMAScript 規范。

CD-ROM格式(之后被國際標準化組織批準為ISO 9660)

C#語言規范

C++/CLI語言規范

通用語言架構(CLI)

ECMAScript語言規范(JavaScript)

Eiffel語言

電子產品環境化設計要素

Universal 3D標準

OOXML

Dart語言規范

JAVASCRIPT的誕生

在說 ECMA262 之前,我們先來講講 javascript 的歷史。

在1994年,Netscape 發布了 Navigator0.9,但是因為那個時候的瀏覽器缺乏和用戶有良好交互的能力。所以 Netscape 急切渴望一門可以在瀏覽器中運行,可以提供一定用戶交互的語言。

然后在1995年,Netscape 讓 Brendan Eich 去開發這門語言。然而,javascript 誕生了。

然而在此之后,Microsoft 推出了一門類似的語言,JScript。

Netscape 為了提升 javascript 的競爭力,于是將 javascript 提供給 ECMA組織 進行標準化。

然后,1997年7月,ECMA262 標準出臺。

時隔14年之后,ECMA-262 標準也被另一個國際標準化組織 ISO(International Organization for Standardization)在2011年6月批準,標準號是 ISO-16262。

ECMAScript 作為一門腳本程序設計語言標準,并不只有 javascript 這一種實現,它也有很多的方言實現。比如有下面這些語言:

JavaScript

Ejscript

JScript .NET

ActionScript

DMDScript

CriScript

InScript

飛速發展和穩定期

在 ECMAScript 規范初版發布后不久。

1998年6月,ECMAScript 2.0 發布。

1999年12月,ECMAScript 3.0 發布。

這時,ECMAScript 規范本身也相對比較完善和穩定了,但是接下來的事情,就比較悲劇了。

2007年10月。。。。ECMAScript 4.0 草案發布。

這次的新規范,歷時頗久,規范的新內容也有了很多爭議。

在制定ES4的時候,是分成了兩個工作組同時工作的。

一邊是以 Adobe, Mozilla, Opera 和 Google為主的 ECMAScript 4 工作組。

一邊是以 Microsoft 和 Yahoo 為主的 ECMAScript 3.1 工作組。

ECMAScript 4 的很多主張比較激進,改動較大。而 ECMAScript 3.1 則主張小幅更新。

最終經過 TC39 的會議,決定將一部分不那么激進的改動保留發布為 ECMAScript 3.1,然后將一部分比較激進的部分放置到 ES.NEXT 中,命名為 Harmony(和諧),留待以后再進行商榷。接下來,ECMAScript? 3.1 變成了 ECMAScript 5,而 ES.NEXT 中的那些特性,則有著相當一部分被ECMAScript 6,也就是 ECMAScript 2015 所吸收了。所以說雖然 ECMAScript 4 被廢棄了,但是它終究還是通過另一種方式活了下來。

然后,2009年12月,ECMAScript 5 發布。

2011年6月,ECMAScript 5.1 發布。

TC39

中間插個小話題。其實在前面大家仔細看,會發現有個名詞,TC39。為了接下來的內容,所以先來解釋一下 TC39 是什么。

TC(Technical Committees)

TG(Task Groups)

在ECMA國際,每個標準都會有一個 TC 來負責,而一個 TC 中可能會有不同的 TG 來負責不同的工作。而負責 ECMA262,也就是我們所說的 ECMAScript 的就是 TC39(以前叫 TC39-TG1)。

Ecma organisation在這里我們可以看到各個 TC,并且可以查看其負責的標準。

ECMAScript 2015

接下來是一部重頭戲。

2015年6月,ECMAScript 6,也就是 ECMAScript 2015 發布了。

新的規范中,帶有大量 ECMAScript 4 中激進特性,以及常年的提案積累。所以 ECMAScript 6 里和前一版標準有了非常大的差別。

從 ECMAScript 6 開始,標準有了新的,更加規范化和快速的制定流程。面對著每年一次的,頻繁的標準更替,再采用1234的版本號來標注規范顯得不太合適。所以從 ECMAScript 6 開始,就開始采用年號來做版本。即 ECMAScript 2015。

新的規范制定流程

在新的規范制定流程中,要求成文標準要從事實標準中誕生,實現先于標準存在,大家可以在接下來的流程說明中看出來。

每個新特性,從開始到完成一共要經歷5個階段。

strawman (稻草人)階段

任何人都可以提交pull request到GitHub - tc39/ecma262: Status, process, and documents for ECMA262

可以是一個提議,想法,初步描述

proposal(提案)階段

TC39制定成員作為 champion

TC39審閱通過

有實現的 Demo 或者 Polyfill

初步描寫標準的語義語法算法復雜度解決的問題等

Draft(草案)階段

有兩個或兩個以上的實現(包括babel這類的轉譯實現)

使用正式的語言描述該語法,api等

candidate(候選)階段

至少2個實現,可以為實驗性實現

ECMAScript spec editor 通過審核

TC39 review 通過

文本編寫完成

Finished(完成)階段

編寫 test 262 測試用例

通過兩個實現該特性的內核測試

ECMAScript spec editor 通過審核

開發者表示支持和認可

接下來,在每年的3月和9月,都會提交新特性的申請,在 ECMA General Assembly 通過以后,被添加到標準中去。

值得注意的是,TC39 每年的工作日程也是規劃好了的。

每年的3月,TC39 會召開會議,將完成的特性添加到標準中。

每年的4月到6月,會由 ECMA CC 和 ECMA CG 來做 Review。

每年的7月,批準通過新標準并且發布。所以,ECMAScript 2016 標準,其實也已經正式發布了,雖然只新增了兩個特性。我們現在已經可以開始看 ECMAScript 2017 的草案了。

迷茫的新特性

對于有些人來說,前端的更新總是很突兀,很讓人迷茫。

但是其實不是的。變化總是一點一點發生的。

GitHub - tc39/proposals: Tracking ECMAScript Proposals

我們可以在 TC39 的 Github 倉庫中找到完成了,廢棄的,以及正在進行中的提案。

多去關注這些東西,對于很多新事物的到來,我們也就不會有多驚訝了。

別的 ECMA 標準?

和 ECMAScript 有關的標準只有 ECMA262 嗎?

其實不是。和 ECMAScript 有關的標準有 ECMA262,ECMA290,ECMA327,ECMA357,ECMA402,ECMA404,ECMA414等等。

其中290,327,357等等沒有推廣開來,被廢棄。

ECMA 262 是語言規范本身。

ECMA 402 則是制定一些基于 ECMAScript 5 或者之后版本的一些國際化 API 標準。

ECMA 404 是 JSON 規范。

ECMA 414 則規定了哪些規范是和 ECMAScript 有關的。目前內部就包含了 262,402和404。

備注

如果大家想更好的關注標準的變化,可以訂閱 TC39 的郵件組,關注 TC39 的 Github,并且在 Twitter 上關注 TC39 的成員。

引用

ECMAScript

Welcome to Ecma International

John Resig -? ECMAScript Harmony

如何評價 ECMAScript 2016(ES7)只新增2個特性? - 張秋怡的回答

The TC39 Process

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,517評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,087評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,521評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,493評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,207評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,603評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,624評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,813評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,364評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,110評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,305評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,874評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,532評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,953評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,209評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,033評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,268評論 2 375

推薦閱讀更多精彩內容