ES6、ES7(及更高版本)、ES2015、stage-0、stage-1(及更高版本)之间的关系是什么?

What is the relation between ES6, ES7 (and bigger), ES2015, stage-0, stage-1 (and bigger)?

我最近对 ​​"new-ish" JavaScript 文章中的以下术语感到困惑:

似乎其中一些是其他子集的子集,但我不太清楚哪些是子集。

公平地说,这有点令人困惑。 :-)

四位数为年份,其余为规范版本。

ES2015 是 ES6。它是 ECMAScript 2015 的缩写,它是该语言的官方名称,由规范的第 6 版定义(因此称为“ES6”)。来自 the spec:

Standard ECMA-262

6th Edition / June 2015

ECMAScript® 2015 Language Specification

同理,ES2016 is ES7

Standard ECMA-262

7ᵗʰ Edition / June 2016

ECMAScript® 2016 Language Specification

2015 年是他们第一次将年份放入语言名称中。之前的规范,2011 年的 5.1,只是“ECMAScript® 语言规范”。所以您会听到 ES5.1(2011 年 6 月发布)ES5(2009 年 12 月发布)和 ES3(1999 年 12 月发布)。 (没有 ES4。)

stage-0等,指语言增强提案阶段,在this github page managed by the TC-39 committee responsible for the language. The enhancement process is laid out on this page from TC-39处理:

0 - Strawman

1 - Proposal

2 - Draft

3 - Candidate

4 - Finished

...一旦进入第 4 阶段,它将 listed here along with the specification it's expected to be in. For instance, Async Functions 达到第 4 阶段并将在 ES2017 中。

TC39 将提案分为 4 个阶段:

  • 第 0 阶段 - 稻草人:只是一个想法。
  • stage-1 - 建议:这是值得努力的。
  • 第 2 阶段 - 草案:初始规范。
  • stage-3 - 候选人:完整的规范和初始浏览器实现。
  • 第 4 阶段 - 完成:将添加到下一个年度版本中。

此外,查看当前 TC39 proposals