[TOC]
# 第五章 標準化:ECMAScript
在JavaScript出現之后,微軟在Internet Explorer 3.0(1996年8月)中實現了相同的語言,在不同的名稱JScript語言中。
部分原因為了讓微軟受抑制的,Netscape決定標準化JavaScript,并要求標準組織Ecma國際組織標準。在1996年11月開始的一個名為ecma-262的規范工作。
由于Sun(現在的Oracle)在JavaScript上有商標,因此它不能是要標準化的語言的官方名稱。因此,選擇了ECMAScript,源自JavaScript和Ecma。但是,該名稱僅用于引用該語言的版本(其中一個引用該規范)。每個人都仍然使用JavaScript語言。
ECMA-262由Ecma的技術委員會39(TC39)進行管理和演變。其成員包括微軟,Mozilla和Google等公司,任命員工參與委員會工作; 例子包括Brendan Eich,Allen Wirfs-Brock(ECMA-262的編輯)和David Herman。
為了推進ECMAScript的設計,TC39主持開放渠道的討論(如郵件列表討論),并定期舉行會議。
TC39會員出席了會議并邀請了專家。2013年初,參加者人數從15人變為25人。
以下是ECMAScript版本(或ECMA-262的版本)及其主要功能的列表:
**ECMAScript 1(1997年6月)**
第一版
**ECMAScript 2(1998年8月)**
編輯變更使ECMA-262與標準ISO / IEC 16262對齊
**ECMAScript 3(1999年12月)**
do-while,正則表達式,新的字符串的方法(concat,match,replace,slice,split使用正則表達式等),異常處理,等等。
**ECMAScript 4(2008年7月被廢棄)**
ECMAScript 4是作為下一個版本的JavaScript開發的,原型是用ML編寫的。然而,TC39對其功能集無法達成一致。為了防止僵局,委員會在2008年7月底開會達成協議,總結了[四點](http://mzl.la/1oNTUiG):
1. 開發ECMAScript 3的增量更新(成為ECMAScript 5)。
2. 開發一個不到ECMAScript 4的主要新版本,但遠遠超過ECMAScript 3的增量更新。新版本的代碼名稱是Harmony,因為會議的性質決定了它的誕生。Harmony 將分為ECMAScript 6和ECMAScript 7。
3. 將要刪除的ECMAScript 4的功能包括packages, namespaces, 和 early binding.
4. 其他想法將與TC39全體共識制定。
因此,ECMAScript 4開發人員同意使Harmony比ECMAScript 4更不激進,TC39的其他人同意繼續前進。
**ECMAScript 5(2009年12月)**
添加嚴格的模式,getter和setter,新的數組方法,支持JSON等(見第25章)
**ECMAScript 5.1(2011年6月)**
編輯變更使ECMA-262與國際標準ISO / IEC 16262:2011的第三版相一致
**ECMAScript 6**
ES6 的第一個版本,就這樣在2015年6月發布了,正式名稱就是《ECMAScript 2015標準》(簡稱 ES2015)。大多數引擎可能會在批準時支持最重要的ECMAScript 6功能。完全支持可能需要更長時間
達成共識并創建一個標準并不是容易的,但是由于前面提到的各方的協作,JavaScript是一門真正開放的語言,許多供應商的實現都是非常兼容的。這種兼容性是通過非常詳細而具體的規范來實現的。例如,該規范通常使用偽代碼,并且由[測試套件test262](http://test262.ecmascript.org/)來補充,該測試套件檢查ECMAScript實現是否符合要求。
值得注意的是,ECMAScript不是由萬維網聯盟(W3C)管理的。TC39和W3C會在 JavaScript 和 HTML5 之間有重疊的地方進行協作。
- 本書簡介
- 前言
- 關于這本書你需要知道些什么
- 如何閱讀本書
- 目錄
- I. JavaScript的快速入門
- 第1章 基礎的JavaScript
- II. 背景知識
- 第2章 為什么選擇JavaScript?
- 第3章 JavaScript的性質
- 第4章 JavaScript是如何創造出來的
- 第5章 標準化:ECMAScript
- 第6章 JavaScript的歷史里程碑
- III. 深入JavaScript
- 第7章 JavaScript語法
- 第8章 值
- 第9章 運算符
- 第10章 布爾值
- 第11章 數字
- 第12章 字符串
- 第13章 語句
- 第14章 異常捕獲
- 第15章 函數
- 第16章 變量:作用域、環境和閉包
- 第17章 對象和繼承
- 第18章 數組
- 第19章 正則表達式
- 第20章 Date
- 第21章 Math
- 第22章 JSON
- 第23章 標準全局變量
- 第24章 編碼和JavaScript
- 第25章 ECMAScript 5中的新功能
- IV. 技巧、工具和類庫
- 第26章 元代碼樣式指南
- 第27章 調試的語言機制
- 第28章 子類化內置構造函數
- 第29章 JSDoc:生成API文檔
- 第30章 類庫
- 第31章 模塊系統和包管理器
- 第32章 其他工具
- 第33章 接下來該做什么
- 著作權