第 5 章:标准化:ECMAScript
目录
购买本书
(广告,请不要屏蔽。)

第 5 章:标准化:ECMAScript

JavaScript 问世后,微软在 Internet Explorer 3.0(1996 年 8 月)中以不同的名称 JScript 实现了相同的语言。为了在一定程度上牵制微软,网景决定将 JavaScript 标准化,并要求标准组织 Ecma 国际 来托管该标准。1996 年 11 月,一项名为 ECMA-262 的规范开始制定。由于 Sun(现为 Oracle)拥有 JavaScript 一词的商标,因此它不能成为要标准化的语言的官方名称。因此,选择了 ECMAScript,它源自 JavaScriptEcma。但是,该名称仅用于指代语言的版本(指的是规范)。每个人仍然将该语言称为 JavaScript

ECMA-262 由 Ecma 的 第 39 技术委员会(TC39)管理和发展。其成员包括微软、Mozilla 和谷歌等公司,这些公司指派员工参与委员会工作;例如 Brendan Eich、Allen Wirfs-Brock(ECMA-262 的编辑)和 David Herman。为了推进 ECMAScript 的设计,TC39 在公开渠道(例如邮件列表 es-discuss)上进行讨论,并定期举行会议。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、正则表达式、新的字符串方法(concatmatchreplaceslice、带有正则表达式的 split 等)、异常处理等等
ECMAScript 4(2008 年 7 月放弃)

ECMAScript 4 被开发为 JavaScript 的下一个版本,其原型是用 ML 编写的。但是,TC39 无法就其功能集达成一致。为了防止僵局,委员会于 2008 年 7 月底举行会议并达成协议,总结为 四点

  1. 开发 ECMAScript 3 的增量更新(成为 ECMAScript 5)。
  2. 开发一个主要的新版本,它比 ECMAScript 4 做的事情要少,但比 ECMAScript 3 的增量更新要多得多。新版本的代号是 Harmony,这是因为它是在一次和谐的会议上构思出来的。Harmony 将分为 ECMAScript 6 和 ECMAScript 7。
  3. ECMAScript 4 中将被删除的功能包括包、命名空间和早期绑定。
  4. 其他想法将在与所有 TC39 成员达成共识的情况下进行开发。

因此,ECMAScript 4 的开发人员同意使 Harmony 不那么激进,而 TC39 的其他成员则同意继续推进工作。

ECMAScript 5(2009 年 12 月)
添加了严格模式、getter 和 setter、新的数组方法、对 JSON 的支持等等(参见 第 25 章
ECMAScript 5.1(2011 年 6 月)
编辑上的更改,使 ECMA-262 与国际标准 ISO/IEC 16262:2011 的第三版保持一致
ECMAScript 6
目前 正在开发中,预计将于 2014 年底获得批准。大多数引擎可能会在批准后支持最重要的 ECMAScript 6 功能。完全支持可能需要更长时间。

达成共识并制定标准并不总是那么容易,但由于上述各方的共同努力,JavaScript 是一种真正开放的语言,多个供应商的实现具有显著的兼容性。这种兼容性是通过非常详细而具体的规范实现的。例如,规范经常使用伪代码,并且辅以测试套件 test262,该套件检查 ECMAScript 实现是否符合规范。值得注意的是,ECMAScript 不是由万维网联盟(W3C)管理的。TC39 和 W3C 在 JavaScript 和 HTML5 重叠的地方进行合作。

下一页:6. JavaScript 历史里程碑