ES6的前世今生

ECMAScript和JavaScript的关系

在1996年,那一年我才4岁。

JavaScript 的亲生爸爸 Netscape 不要他了。

可又谁知道,时隔20年后,我居然要靠这个弃婴在社会上讨口饭吃。

So,谁来接管了这个弃婴呢?

原来一个作为标准化的组织 ECMA 接手了它。

其实, Netscape 的出发点是好的,所谓,“望子成龙,望女成凤”,他也希望 JavaScript 能在未来的时代里形成自己的风格和潮流,成为一种国际标准。

而后的20多年时间里,JavaScript果然不负所望,成为新的弄潮儿。

在次年,1997年。养父 ECMA 发布了262号标准文件的第一版,也就是 ECMA-262 。这个已经具有了划时代的意义了,因为也就是这个文件的发布,规定了浏览器脚本语言的标准,它们赋予了这个孩子一个新的名字,管它叫做 ECMAScript

这个版本就是1.0版本。

至于,它为什么不叫 JavaScript

一是这个名字是 Netscape 起的,它们不想自己又被侵犯的感觉,而是ECMA也想提现是自己提出并且制定了标准,所以要带上自己的一点色彩。

因此,我们可以这样理解二者的关系,ECMAScriptJavaScript 的规格,而后者才是核心的东西去实现该规格。

ECMAScript 2015 和 ES6的关系

What is the different between ECMAScript 2015 and ES6?

很简单,它俩就是一个东西。

ECMAScript 2015(简称ES2015)是其官方名字,而 ES6 是一个别名,泛指。

在2011年, ECMA 发布了 ECMAScript 5.1 版本。

而在我最初接触前端这个行业的时候,或者我们大多数人最开始写的 JavaScript 代码都是这个版本的。

骚动不安的开发者们,在这个版本发布以后就开始不断地提交新的功能,标准的制定者们发现,下一版本要更新的语法功能太多了,而这也将产生生产力的变革。

所以,如我们现在发布产品一样,大功能当然要改一个大的版本号,于是开始紧锣密鼓的着手 ES6.0 版本的开发和制定。

所以我们说的 ES6 就是指 JavaScript 语言的下一个版本。

按照通常的做法,我们会在一个大版本后升级其对应的小版本,比如说:ES6.0版本、ES6.1版本、ES6.2版本...

But,标准的制定者们不想这么做,他们希望这种标准的升级能够成为一种常规的流程。anybody在anytime都可以向标准联盟提交新的提案。然后,每个月这些联盟成员会聚集在一起商议、裁定我们要不要这些提案。直到某个提案成熟了,觉得其可以正式地纳入标准了,就把它敲定下来。

再但是,敲定下来的提案总得有个时间去发布更新到新的版本吧。这些制定者们又觉得频繁的小版本更新很繁琐,于是,他们决定把每年的六月份定为了 JavaScript 的吉祥月,在这个月,进行一次版本的发布。

我们回顾一下,上面我们说到2011年 ECMA 发布了 ECMAScript 5.1 的版本。

直到2015年的6月,也是 JavaScript 历史上的第一个吉祥月,它发布了自己的 ES6.0 版本,也就是我们熟知的 ES6 。我们同时也以它发布的年份对其进行另外一种命名:ECMAScript 2015标准(简称ES2015)。

我们需要记住的一点就是:2015年是 ES6 的诞生年。

于是,后面陆续的就会有:

  • ECMAScript 2016标准 ES7 (2016年6月发布)
  • ECMAScript 2017标准 ES8 (2017年6月发布)
  • ECMAScript 2018标准 ES9 (2018年6月发布)

每年都会有一些新的特性。

写到这里让我想起一句话:

优秀的工程师都是懒的

嗯,他们喜欢造出各种新奇的方案去改变之前解决问题的困境和复杂度。向伟大的程序员致敬!

回到我们的主题,我们现在学习和工作中用到的 ES6 ,它是 JavaScript 历史上的一个分水岭,它泛指在2015年更新标准以后的标准,涵盖了上面列举到的三条标准。它被广义的认为是“下一代的JavaScript语言”。

关于语法提案的批准流程

任何人都可以向标准联盟提案,要求修改语言的标准。

一项提案升级到标准需要渡五次劫,每次都要需要通过联盟的严格审核:

  • Stage 0 - Strawman (展示阶段)
  • Stage 1 - Proposal (征求意见阶段)
  • Stage 2 - Draft (草案阶段)
  • Stage 3 - Candidate (候选人阶段)
  • Stage 4 - Finished (定案阶段)

一般来讲,如果可以渡劫到第三个阶段 -- 也就是 Stage 2 阶段,基本在下一个标准更新就会纳入到正式的标准里面。

下一篇文章将会介绍如何在一个项目中使用ES6语法。

你可能感兴趣的:(ES6的前世今生)