关于ECMA、ECMAScript、TC39、ES、Stage等概念的科普
快速通道:
提到ECMA、ECMAScript、TC39、ES ,你可能对这些名词代表的概念一知半解甚至是从未了解过,不过没关系,不了解这些不会影响你对ES新特性的使用。本文只是简单的介绍下这些概念作为一次简单的科普,希望能帮你扩展下知识面。
ECMA:欧洲计算机制造协会 ,这是一个国际组织,主要负责维护各种计算机的相关标准。我们都知道JavaScript这门语言最早来自于网景(Netscape),但网景在和微软(IE)的竞争落得下风,为了避免最终Web脚本主导权落入微软手中,网景开始寻求ECMA组织的帮助,来推动JavaScript的标准化。
Ecma 国际:1994 年之后,由于 ECMA 组织的标准牵涉到很多其他国家,为了体现其国际性,更名为 Ecma 国际(Ecma International)。
ECMAScript:1996年,JavaScript正式加入了ECMA大家庭,简称 ECMAScript(或ES)。ES 是 JS 的规范,而 JS 是 ES 的一种实现方法
TC39:是ECMA为ES专门组织的技术委员会(Technical Committee),39这个数字则是因为ECMA使用数字来标记旗下的技术委员会。TC39的成员由各个主流浏览器厂商的代表构成。关于TC39的更对知识可参考:https://2ality.com/2015/11/tc39-process.html
ECMA-262:Ecma 国际的标准,都会以 Ecma-Number 命名,ECMA-262 就是 ECMA 262 号标准,具体就是指 ECMAScript 遵照的标准。1996 年 11 月,网景公司将 JavaScript 提交给 Ecma 国际进行标准化。ECMA-262 的第一个版本于 1997 年 6 月被 Ecma 国际采纳。这一标准是在不断演进的,如现在是2020年6月发布的第11版。同样的,目前最为熟知的是2015年发布的ES6。你还可以在TC39的ECMA262官网上看到ES2022的最新草案。当然,ECMA还维护着许多其他方面的标准,如:
从一个提案提出到最后纳入ES新特性,TC39规定有如下五步:
- stage0(strawman):任何TC39的成员都可以提交。
- stage1(proposal):进入此阶段就意味着这一提案被认为是正式的了,需要对此提案的场景与API进行详尽的描述。
- stage2(draft):演进到这一阶段的提案如果能最终进入到标准,那么在之后的阶段都不会有太大的变化,因为理论上只接受增量修改。
- state3(candidate):这一阶段的提案只有在遇到了重大问题才会修改,规范文档需要被全面的完成。
- state4(finished):这一阶段的提案将会被纳入到ES每年发布的规范之中,只有到这个阶段的提案才会被标记为“已完成”,并在将来进入到下一个 ES 标准里。
如果文章有啥描述的不清楚的,欢迎批评指正+补充~