3、讲一讲es6的版本怎么更新的(略少)

现在Firefox,Chrome,Edge,Safari和Node.js的最新版都原生实现了 ES6 规范中超过95%的标准了,但是我们并不需要等到规范百分百的被支持再使用新语法。在描述如何使用之前,我们先看看规范指定的几个阶段。

  • Stage0 :任何尚未提交为正式提案的讨论,想法,改变或对已有规范的补充建议都被认为是一个稻草人草案(“strawman” proposal),但只有TC39成员可以提出此阶段的草案。
  • Stage1 :此阶段,稻草人草案升级为正式化的提案,并将逐步解决多部门关切的问题,如与其他提案的相互之间会有什么影响,这一草案具体该如何实施等问题。人们需要对这些问题提供具体的解决方案。stage1的提案通常还需要包括API描述,拥有说明性使用示例,并对语义和算法进行讨论,一般来说草案在这一阶段会经历巨大的变化。
  • Stage2 :此阶段,草案就有了初始的规范。通过polyfill,开发者可以开始使用这一阶段的草案了,一些浏览器引擎也会逐步对这一阶段的规范的提供原生支持,此外通过使用构建工具也可以编译源代码为现有引擎可以执行的代码,这些方法都使得这一阶段的草案可以开始被使用了。
  • State3 :此阶段的规范就属于候选推荐规范了,这一阶段之后变化就不会那么大了,要达到这一阶段需要满足以下条件:
  • 规范的编辑和指定的审阅者必须在最终规范上签字;
  • 用户也应该对该提议感兴趣;
  • 提案必须至少被一个浏览器原生支持;
  • 拥有高效的ployfill,或者被Babel支持;
  • Stage4 :此阶段的提案必须有两个独立的通过验收测试的实现,进入第4阶段的提案将包含在 ECMAScript 的下一个修订版中。

ES6开始,TC39每年都会发布新的规范,新的规范将包含年号,如ES6 别名 ES2015,2016年通过的规范将叫 真名叫 ES2016 而非ES7,以此类推。不过对ES6,社区还是习惯喊其为 ES6,因为其在新命名规则公布之前就以被大家熟悉,ES7有时候也会面临类似的问题,不过之后就会好转了,我们之后会说ES6,ES2016,ES2017,ES2018等等。

精简提案流程和每年发布的新版本使得新版标准的发布得以持续化,不过这也意味着版本号不再那么重要了,这也使得现在大家都把精力放在提案上,对参考ECMAScript标准的期待反而变少了。