ES6 是 ECMAScript6.0 的简称,是 JavaScript 语言的下一代标准,于 2015 年 6 月正式发布了。
它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
二者的关系可以理解为,ECMAScript 是 JavaScript 的规范,JavaScript 是 ECMAScript 的一种实现(另外 ECMAScript 方言还有 JScript 和 ActionScript),要讲清楚这个问题,需要回顾历史啦。
次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言成为 ECMAScript,这个版本就是 1.0 版本。
为什么该标准从一开始就是针对 JavaScript 语言制定的,但却不叫 JavaScript 呢?有两个原因:一是商标,Java 是 Sun 公司的商标,根据授权协议,只有 Netscape 公司可以合法地使用 JavaScript 这个名字,且 JavaScript 本身也已经被 Netscape 公司注册为商标;二是想体现这门语言的制定者是 ECMA,不是 Netscape,这样有利于保证这门语言的开放性和中立性。
ECMAScript 2015(简称 ES2015)这个词,也是经常可以看到的。那么它与 ES6 是什么关系呢?
2011 年,ECMAScript5.1 版发布后,就开始定制 6.0 版了。因此,ES6 这个词的原意,就是指 JavaScript 语言的下一个版本。
接下来听个故事吧~~
接上文知道 ES6 将是 JavaScript 的下一个版本,但是紧接着两个但是~~。
但是,因为这个版本引入的语法功能太多,而且在制定过程当中,还很多组织和个人不断提交新功能。事情很快就变得清楚了,不可能在一个版本里面包括所有将要引入的功能。常规的做法是先发布 6.0 版本,过一段时间再发 6.1 版,然后 6.2 版,6.3 版等等。
但是,标准的制定者不想这样做。他们想让标准的升级成为常规流程:任何人在任何时候,都可以向标准委员会提交新语法的提案,然后标准委员会每个月开一次会,评估这些提案是否可以接受,哪些需要改进。如果经过多次会议后,一个提案足够成熟了,就可以正式进入标准了。这就是说,标准的版本升级成为了一个不断滚动的流程,每个月都会有变动。
标准委员会最终决定,标准在每年的 6 月份正式发布一次,作为当年的正式版本。接下来的时间,就在这个版本的基础上做改动,直到下一年的 6 月份,草案自然就变成下一年的版本。这样一来,就不需要以前的版本号,只要用年份标记就可以了。
故事讲到这里,基本就清晰了 ES6 和 ECMAScript2015 的关系了。
2015 年 6 月发布了 ES6 的第一个版本,正式名称就是《ECMAScript 2015 标砖》(简称 ES2015).
因为 ES2016 与 ES2015 的差异非常小,只新增了数组实例的 includes 方法和指数运算符,基本上是同一个标准。
因此,ES6 既是一个历史名词,也是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等,而 ES2015 则是正式名称,特指该年发布的正式版本的语言标准。
任何人都可以向标准委员会(又称 TC39 委员会)提案,要求修改语言标准。
一种新的语法从提案到变成正式标准,需要经历五个阶段。每个阶段的变动都需要由 TC39 委员会批准。
一个提案只要能进入 Stage 2,就差不多肯定会包括在以后的正式标准里面。ECMAScript 当前的所有提案,可以在 TC39 的官方网站 GitHub.com/tc39/ecma262 查看。
ES6 从开始制定到最后发布,整整用了 15 年。
3.0 版是一个巨大的成功,在业界得到广泛支持,成为通行标准,奠定了 JavaScript 语言的基本语法,以后的版本完全继承。直到今天,初学者一开始学习 JavaScript,其实就是在学 3.0 版的语法。
为什么 ES4 没有通过呢?因为这个版本太激进了,对 ES3 做了彻底升级,导致标准委员会的一些成员不愿意接受。ECMA 的第 39 号技术专家委员会(Technical Committee 39,简称 TC39)负责制订 ECMAScript 标准,成员包括 Microsoft、Mozilla、Google 等大公司。
🔥BuildAdmin是一个永久免费开源,无需授权即可商业使用,且使用了流行技术栈快速创建商业级后台管理系统。