原网址:http://huangxuan.me/2015/09/22/js-version/javascript
JavaScript 有着很奇怪的命名史。java
1995 年,它做为网景浏览器(Netscape Navigator)的一部分首次发布,网景给这个新语言命名为 LiveScript。一年后,为了搭上当时媒体热炒 Java 的顺风车,临时更名为了 JavaScript (固然,Java 和 JavaScript 的关系,就和雷锋和雷锋塔同样 —— 并无什么关系)git
歪果仁的笑话怎么一点都很差笑es6
译者注:wikipedia 的 JavaScript 词条 更详细的叙述了这段历史github
1996 年,网景将 JavaScript 提交给 ECMA International(欧洲计算机制造商协会) 进行标准化,并最终肯定出新的语言标准,它就是 ECMAScript。自此,ECMAScript 成为全部 JavaScript 实现的基础,不过,因为 JavaScript 名字的历史缘由和市场缘由(很显然 ECMAScript 这个名字并不使人喜欢……),现实中咱们只用 ECMAScript 称呼标准,平时都仍是使用 JavaScript 来称呼这个语言。web
术语(译者注):编程
- 标准(Standard): 用于定义与其余事物区别的一套规则
- 实现(Implementation): 某个标准的具体实施/真实实践
不过,JavaScript 开发者们并不怎么在意这些,由于在诞生以后的 15 年里,ECMAScript 并无多少变化,并且现实中的不少实现都已经和标准截然不同。其实在初版的 ECMAScript 发布后,很快又跟进发布了两个版本,可是自从 1999 年 ECMAScript 3 发布后,十年内都没有任何改动被成功添加到官方规范里。取而代之的,是各大浏览器厂商们争先进行本身的语言拓展,web 开发者们别无选择只能去尝试而且支持这些 API。即便是在 2009 年 ECMAScript 5 发布以后,仍然用了数年这些新规范才获得了浏览器的普遍支持,但是大部分开发者仍是写着 ECMAScript 3 风格的代码,并不以为有必要去了解这些规范。浏览器
译者注:ECMAScript 第四版草案因为太过激进而被抛弃,Adobe 的 ActionScript 3.0 是 ECMAScript edition 4 的惟一实现( Flash 差点就统一 Web 了)babel
到了 2012 年,事情忽然开始有了转变。你们开始推进中止对旧版本 IE 浏览器的支持,用 ECMAScript 5 (ES5) 风格来编写代码也变得更加可行。与此同时,一个新的 ECMAScript 规范也开始启动。到了这时,你们开始逐渐习惯以对 ECMAScript 规范的版本支持程度来形容各类 JavaScript 实现。在正式被指名为 ECMAScript 第 6 版 (ES6) 以前,这个新的标准本来被称为 ES.Harmony(和谐)。2015 年,负责制定 ECMAScript 规范草案的委员会 TC39 决定将定义新标准的制度改成一年一次,这意味着每一个新特性一旦被批准就能够添加,而不像以往同样,规范只有在整个草案完成,全部特性都没问题后才能被定稿。所以,ECMAScript 第 6 版在六月份公布以前,又被重命名为了 ECMAScript 2015(ES2015)ecmascript
目前,仍然有不少新的 JavaScript 特性或语法正在提议中,包括 decorators(装饰者),async-await(async-await 异步编程模型) 和 static class properties(静态类属性)。它们一般被称为 ES7,ES2016 或者 ES.Next 的特性,不过实际上它们只能被称做提案或者说可能性,毕竟 ES2016 的规范尚未完成,有可能所有都会引入,也有可能一个都没有。TC39 把一个提案分为 4 个阶段,你能够在 Babel 的官网 上查看各个提案目前都在哪一个阶段了。
因此,咱们该如何使用这一大堆术语呢?下面的列表或许能帮助到你:
在这整个 Blog 中,我将把目前的 ECMAScript 版本称做 ES6(由于这是大部分开发者最习觉得常的),把明年的规范称做 ES2016(由于,与 ES6/ES2015 不一样,这个名字将在整个标准化过程当中沿用)而且将那些尚未成为 ECMAScript 定稿或草案的将来语言概念称为 ECMAScript 提案或者 JavaScript 提案。我将尽我所能在任何可能引发困惑的场合沿用这篇文章。
来学 JavaScript 吧!