ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。
历史
1995年12月升阳公司与网景通讯公司一起引入了JavaScript。1996年3月,网景通讯公司发表了支持JavaScript的网景导航者2.0。由于JavaScript作为网页的客户端脚本语言非常成功,微软于1996年8月引入了Internet
Explorer3.0,这个软件支持一个“约”与JavaScript相容的JScript。
1996年11月网景通讯公司将JavaScript提交给欧洲计算机制造商协会进行标准化。ECMA-262的第一个版本于1997年6月被Ecma组织采纳。
ECMAScript是由ECMA-262标准化的脚本语言的名称。JavaScript和JScript与ECMAScript相容,但包含超出ECMAScript的功能。
版本
至今为止有四个ECMA-262版本发表,代号“Harmony”版本正在工作中。
版本 |
发表日期 |
与前版本的差异 |
---|
1 |
1997年6月 |
首版 |
2 |
1998年6月 |
格式修正,以使得其形式与ISO/IEC16262国际标准一致 |
3 |
1999年12月 |
强大的正则表达式,更好的文字链处理,新的控制指令,异常处理,错误定义更加明确,数据输出的格式化及其它改变 |
4 |
放弃 |
由于关于语言的复杂性出现分歧,第4版本被放弃,其中的部分成为了第5版本及Harmony的基础。 |
5 |
2009年12月[1] |
新增“严格模式(strict mode)”,一个子集用作提供更彻底的错误检查,以避免结构出错。澄清了许多第3版本的模糊规范,and accommodates behaviour of real-world implementations that differed consistently from that specification。增加了部分新功能,如getters及setters,支持JSON及更完整的反射在关于对象属性中。[2][3][4][5] |
Harmony |
正在工作中 |
多个新的概念和语言特性 — 参考JavaScript#Features。ECMAScript Harmony将会以“ECMAScript 6”发布。 |
2004年6月Ecma组织发表了ECMA-357标准,它是ECMAScript的一个扩延,也被称为E4X(ECMAScript for XML)。
方言
许多程序,尤其是网页浏览器支持ECMAScript。浏览器中的ECMAScript实现添加了与文档对象模型的接口,可以通过脚本改变网页的内容、结构和样式。
使用的应用程式 |
方言 |
相应ECMAScript版本 |
---|
Mozilla Firefox ,Gecko
排版引擎,SpiderMonkey及Rhino[d
1] |
JavaScript 1.8.1[d 2] |
ECMA-262, 第五版 |
Google Chrome,
V8 排版引擎 |
JavaScript[d 2] |
ECMA-262, 第五版[d 3] |
Internet Explorer,
Trident 排版引擎 |
JScript 9.0 |
ECMA-262, 第五版[d 4] |
Opera |
ECMAScript[d 5] |
ECMA-262, 第三版 |
KHTML 排版引擎,
KDE Konqueror及苹果公司
Safari[d 6] |
JavaScript[d 2] |
ECMA-262, 第三版 |
Appweb Web Server,
Samba 4 |
Ejscript 0.9.9 |
ECMA-262, 第三版[d 7] |
Microsoft .NET Framework |
JScript .NET 8.0 |
ECMA-262, 第三版[d 8] |
Adobe Flash及Adobe Flex |
ActionScript 3 |
ECMA-262, 第三版[d 9] |
Adobe Acrobat |
JavaScript 1.7[d 10] |
ECMA-262, 第三版 |
通用脚本语言 |
DMDScript 1.15 |
ECMA-262 |
OpenLaszlo平台 |
JavaScript[d 11] |
ECMA-262, 第三版[d 12] |
CriScript, 游戏平台的JScript |
CriScript 0.91.0 |
ECMA-262, 第三版 |
iCab |
InScript 3.22 (放弃) |
ECMA-262, 第三版 |
Max/MSP |
JavaScript 1.5[d 2] |
ECMA-262, 第三版 |
ANT Galio 3 |
JavaScript 1.5[d 2][d 13] |
ECMA-262, 第三版 |
KDE |
QtScript |
ECMA-262, 第三版 |
|
Caja |
ECMA-262, 第三版[d 14] |
|
Objective-J |
ECMA-262, 第三版 |
|
WMLScript |
ECMA-262, 第三版 |
- ^
Mozilla能透过SpiderMonkey中的C语言及Rhino
中Java),在部分第三方软件,包括Yahoo! Widgets (Konfabulator)及Macintosh系统级的脚本语言实现JavaScript
OSA.
- ^
2.0
2.1
2.2
2.3
2.4 Mozilla官方版本的JavaScript.。Most non-Mozilla implementations claiming JavaScript "compliance" do not actually support most JavaScript extensions; rather, they target ECMA-262, 第三版.
- ^
V8实现ECMAScript在ECMA-262,第三版:
V8 JavaScript Engine.
- ^
Internet Explorer 9 已通过JScript 9.0实现对ECMA-262,第五版的支持, 详见JScript条目.
- ^
Opera执行了部分JavaScript及JScript扩展:
ECMAScript support in Opera Presto 2.10
- ^
Safari使用基于KDE
KJS的JavaScriptCore函式库。
- ^
This implementation asserts to support some extensions proposed in drafts of ECMAScript edition 4 (and now ECMAScript Harmony):
Ejscript Overview.
- ^
微软聱称,JScript 8.0支持"几乎所有ECMAScript第三版的特征",但没有列出不支持的功能。
- ^
除了支ECMA-262版本三以外,ActionScript 3同时支持ECMAScript版本四的扩展提议草案:
The Kiwi Project: AS3 language 101 for C/C++ coders.
- ^
Adobe Acrobat 9.0使用SpiderMonkey 1.7 排版引擎:
JavaScript for Acrobat API Reference
- ^
OpenLaszlo both uses an ECMAScript dialect as noted in the
Developer's Guide: Appendix B: ECMAScript and can compile down to JavaScript targeted for the browser (the
DHTML target).
- ^
As of version 4, OpenLaszlo implements standard ECMAScript edition 3 with some extensions proposed in drafts of ECMAScript edition 4:
OpenLaszlo 4.
- ^
ANT Galio Browser要求支持JavaScript 1.5
- ^
Caja模拟严格模式在ECMAScript版本五。
对应版本
以下表格中的数据基于[1]和[2]。
JavaScript |
JScript |
ECMAScript |
---|
1.0 (Netscape 2.0, 1996年8月) |
1.0 (IE 3.0 - 早期版本, 1996年8月) |
|
1.1 (Netscape 3.0, 1996年8月) |
2.0 (IE 3.0 - 后期版本, 1997年1月) |
|
1.2 (Netscape 4.0-4.05, 1997年6月) |
|
|
1.3 (Netscape 4.06-4.7x, 1998年10月) |
3.0 (IE 4.0, 1997年10月) |
第一版 (1997年6月) / 第二版 (1998年6月) |
1.4 (只有Netscape Server) |
4.0 (Visual Studio 6, 没有IE发布) |
|
|
5.0 (IE 5.0, 1999伴月) |
|
|
5.1 (IE 5.01) |
|
1.5 (Netscape 6.0, 2000年11月;后期 Netscape及Mozilla发布) |
5.5 (IE 5.5, 2000年7月) |
第三版 (1999年12月) |
|
5.6 (IE 6.0, 2001年10月) |
|
1.6 (Gecko 1.8, Firefox 1.5, 2005年11月) |
|
第三版,新增一些标准的改进: E4X,额外Array (如Array.prototype.forEach ),
Array 及String generics (JavaScript 1.6的新功能) |
1.7 (Gecko 1.8.1, Firefox 2, 2006年10月) |
|
第三版新增Python generators及array comprehensions ([a*a for (a in iter)] ),
block
scope with let , destructuring assignment (var [a,b]=[1,2] )(JavaScript 1.7的新功能) |
1.8 (Gecko 1.9, Firefox 3, 2008年6月) |
|
Edition 3 plus all JavaScript 1.7 enhancements, plus expression closures (function(x) x * x), generator expressions(JavaScript 1.8的新功能)expression closures (function(x) x * x ), generator expressions(JavaScript
1.8的新功能) |
|
JScript .NET (ASP.NET; 没有IE发布) |
(JScript .NET is said to have been designed with the participation of other Ecma members[6]) |
JavaScript 2.0 (工作中) |
|
Harmony (工作中) |
参考文献
参见
外部链接
隐藏▲
网页技术与标准
|
---|
|
文档呈现语言 |
|
---|
|
样式格式描述语言 |
|
---|
|
动态网页技术 |
|
---|
|
客户端交互技术 |
|
---|
|
客户端脚本语言 |
|
---|
|
标识定位语言 |
|
---|
|
文档纲要语言 |
|
---|
|
|
|
隐藏▲
ECMAScript
|
---|
|
方言 |
|
---|
|
引擎列表 比较 |
|
---|
|
框架及函式库 |
|
---|
|
人物 |
|
---|
|
其它 |
|
---|
|