本文完全摘自 《Understanding ECMAScript 6》oshotokill 翻译版本的简介
在2007年,JavaScript 已行至于交叉路口。Ajax 的流行宣告了动态 web 应用时代的到来,然而 JavaScript 自1999年 ECMA-262 发布了第三版(ES3)以后便从未发生变化,于是 TC-39 委员会便承担了发布下一版的任务,收集了大批草案并命名为 ECMAScript 4。ECMAScript 4 的变革范围十分广泛,语言的各个部分都有大大小小的变化。 添加的新特性中包括一些新语法,模块,类,传统的继承方式(classical inheritance),私有对象成员,可选类型注解(optional type annotations),以及其它等等。
ECMAScript 4 的变动之大造成了 TC-39 委员会内部的分歧,一部分成员认为这些更改有些过火了。于是一组来自于雅虎,谷歌和微软的成员便自行撰写了下一代 ECMAScript 的草案,称其为 ECMAScript 3.1 ,其中 “3.1” 代表在已有标准之上的小增集。
ECMAScript 3.1 的语法变动非常少,反而专注于属性特性(property attribute),支持原生 JSON 和在已有的对象之上添加更多方法。虽然早先曾有过 ECMAScript 3.1 与 EMCAScript 4 的融合尝试,不过两者之间巨大的差异和对语言发展方向认识的不同导致尝试失败了。
2008年,JavaScript的缔造者 Brendan Eich 认定 TC-39委员会应该专注于 ECMAScript 3.1 的标准化,ECMASciprt 4 中主要的语法变化和新特性应该搁置到下一代 ECMAScript 标准化之后。委员会的成员一起努力把 ECMAScript 3.1 和 ECMAScript 4 中的精华部分汇聚在一起,称其为 ECMAScript Harmony 。
ECMAScript 3.1 最终作为 ECMA-262 第五版标准被发布,别名为 ECMAScript 5 。委员会为了在命名上避免和已胎死腹中的 ECMAScript 4 混淆,并未发布该标准。在那之后,以 ECMAScript Harmony 为起始,“harmony” 为精神的下一版标准 ECMAScript 6 的发布工作正式启动。
ECMAScript 6 中所有选定草案完全被标准化的日期在2015年,因此正式被更名为 “ECMAScript 2015”(不过本书仍称其为 ECMAScript 6 ,因为开发者对这个名字更为熟悉)。该标准中新的特性作用范围十分广泛,包括全新的对象类型,模式以及给已有对象添加新的方法等等。 ECMAScript 6 的兴奋点在于所有的变动都是为了解决开发者在开发过程中实际存在的问题。