[译]ECMAScript:ES.next和ES6以及ES Harmony之间的区别

原文:http://www.2ality.com/2011/06/ecmascript.html

本文解释了JavaScript和ECMAScript之间的区别.还解释了ECMAScript.next和ECMAScript 6以及ECMAScript Harmony之间的区别. 

部分ECMAScript术语

你应该知道下面这些与JavaScript标准化相关的术语.

  • ECMAScript: Sun(现在的Oracle)公司持有着“Java”和“JavaScript”的商标.这就让微软不得不把自己的JavaScript方言称之为“JScript”.然后,在这门语言被标准化的时候,就必须使用一个与二者都不同的名字.“ECMAScript”就这样诞生了,这个名字的来由是因为执行标准化的组织是Ecma国际.通常来说,术语“ECMAScript”和“JavaScript”指的是同一个东西.但如果把JavaScript看成是“Mozilla或其他组织的ECMAScript实现”,那么ECMAScript就是实现JavaScript所依据的标准.术语“ECMAScript”也用来描述语言版本(比如ECMAScript 5).
  • ECMA-262: Ecma国际 (一个标准化组织)创建了ECMA-262规范,这个规范就是ECMAScript语言的官方标准.
  • ECMAScript 5: 如果有人提到ECMAScript 5,那么他指的就是ECMA-262规范的第五版,同时也是当前最新的正式规范.
  • Ecma第39号技术委员会 (TC39): 是一组开发ECMA-262标准规范的人(Brendan Eich和其他一些人).

ECMAScript的历史

  • ECMAScript 3 (1999年12月).这是目前大部分浏览器都支持的ECMAScript版本.该版本引入了很多的新特性,这些特性已经成为该语言不可或缺的一部分:
    [...] 正则表达式,更好的字符串处理,新的控制语句,try/catch异常捕获,更严格的错误类型定义,格式化数字输出以及其他增强特性. [1]
  • ECMAScript 4 (2008年7月被废弃). ECMAScript 4是作为下一代的JavaScript被开发的,同时有一个用ML写成的原型.但是,TC39委员会并不完全同意它的一些新特性.为了防止陷入僵局, 委员会2008年7月底会晤,并产生一项协议,协议内容总结为以下四点[2]:
    1. 开发一个增量式更新的ECMAScript (后来成为了ECMAScript 5).
    2. 开发一个重要的新版本规范,要比ECMAScript 4更先进,但会比ECMAScript 3之后的那个版本更新跨度更大.该版本的开发代号被定为Harmony,因为这场会议的的性质就是倡导我们要和谐发展.
    3. ECMAScript 4中引入的一些特性将被丢弃:包,命名空间,早期绑定.
    4. 其他的想法要在成为所有的TC39成员的共识下开发.
    最终:ECMAScript 4的开发者们同意把Harmony做的不要像ECMAScript 4那么激进,其余的TC39成员也表示同意,开发继续进行.
  • ECMAScript 5 (2009年12月). 此版本带来了一些标准库增强,甚至通过引入严格模式更新了语言的语义.[3]
  • ECMAScript.next (计划于2013年). 从问世以来,这个版本就显得有点太过雄心勃勃了,所以它的特性被分成了两组,第一组是那些将要成为ECMAScript 5下一个版本的特性.这一版本的开发代号称之为ECMAScript.next,并且很可能成为ECMAScript 6.第二组是Harmony特性,这些特性被认为是准备还不够充分或者重要程度还不够,所以不能进入ECMAScript.next.但仍然会进入某个更新的ECMAScript版本中,比如ECMAScript.next.next.当前的目标是在2013年完成ECMAScript.next,在此之前,浏览器(主要是火狐)要实现部分规范.

总结

ECMAScript和JavaScript的关系.ECMAScript是语言的规范.而JavaScript是规范的实现,Microsoft的JScript是另外一个实现

即将到来的ECMAScript版本:

  • ECMAScript.next是ECMAScript下一版规范的开发代号(code name).使用这个术语就意味着当前讨论的特性可能会也可能不会被加入最终的规范中.
  • ECMAScript 6是ECMAScript.next的实际(最终)名称.使用这个术语就意味着当前讨论的特性一定会被添加在最终的规范中.
  • ECMAScript Harmony是ECMAScript.next的超集,意味着“ECMAScript 5之后的新特性”.这些特性可能会被添加到ECMAScript.next中,也可能被添加到ECMAScript.next.next或者更新的版本中.

参考

  1. ECMAScript - Wikipedia, the free encyclopedia
  2. ECMAScript Harmony (电子邮件归档)
  3. What’s new in ECMAScript 5
  4. JavaScript: how it all began
  5. Posts on ECMAScript.next

译者注

ECMAScript的读音大概为"艾克马script"

ECMA国际除了TC39还有很多委员会,他们制定的规范也不只有ECMAScript,还有很多其他的规范,有数据压缩相关的,有无线通信相关的,属于ECMAScript的规范只有三个,ECMA-262:我们通常说的ECMAScript就指的这个,还有ECMA-357:E4x,ES262的扩展,只有火狐实现了.还有ECMA-327.

John Resig也有一篇相关的文章,http://ejohn.org/blog/ecmascript-harmony/

我英语渣水平,翻译不对的地方请一定要指教.

posted @ 2012-09-24 14:06 紫云飞 阅读(...) 评论(...) 编辑 收藏