[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章 接下来该做什么
- 著作权