💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[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 之间有重叠的地方进行协作。