跳转到内容

ECMAScript

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是本页的一个历史版本,由Ante Chin留言 | 贡献2017年12月31日 (日) 05:10 (修正链接)编辑。这可能和当前版本存在着巨大的差异。

ECMAScript
编程范型多重編程範式原型程式設計函數程式語言指令式編程
設計者布蘭登·艾克Ecma國際
发行时间1997年,​27年前​(1997
当前版本
    編輯維基數據鏈接
    型態系統弱类型動態
    網站ecma-international.org 編輯維基數據鏈接
    主要實作產品
    SpiderMonkeyV8ActionScriptJScriptQtScriptInScript
    啟發語言
    SelfHyperTalkAWKCPerlPythonJavaScheme
    ECMAScript
    扩展名
    .es
    互联网媒体类型
    application/ecmascript
    开发者昇陽電腦公司
    Ecma國際
    首次发布1997年6月,​27年前​(1997-06
    最新版本
    Edition 8
    2017年6月,​7年前​(2017-06
    格式类型脚本語言
    网站ECMA-262ECMA-290
    ECMA-327ECMA-357
    ECMA-402

    ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScriptJScript,但实际上后两者是ECMA-262标准的实现和扩展。

    历史

    1995年12月,升阳网景一起引入了JavaScript[1]。1996年3月,网景公司发表了支持JavaScript的网景导航者 2.0。由于JavaScript作为网页的客户端脚本语言非常成功,微软于1996年8月引入了Internet Explorer 3.0,这个软件支持一个“约”与JavaScript相容的JScript[2]

    1996年11月,网景公司将JavaScript提交给欧洲计算机制造商协会进行标准化。ECMA-262的第一个版本于1997年6月被Ecma组织采纳[3]

    ECMAScript是由ECMA-262标准化的脚本语言的名称。JavaScript和JScript与ECMAScript相容,但包含超出ECMAScript的功能。

    版本

    至今为止有七个ECMA-262版本发表。

    版本 发表日期 与前版本的差异
    1 1997年6月 首版
    2 1998年6月 格式修正,以使得其形式与ISO/IEC16262国际标准一致
    3 1999年12月 强大的正则表达式,更好的词法作用域链处理,新的控制指令,异常处理,错误定义更加明确,数据输出的格式化及其它改变
    4 放棄 由於關於語言的複雜性出現分歧,第4版本被放棄,其中的部分成為了第5版本及Harmony的基礎。
    5 2009年12月[4] 新增「嚴格模式(strict mode)」,一個子集用作提供更徹底的錯誤檢查,以避免結構出錯。澄清了許多第3版本的模糊規範,and accommodates behaviour of real-world implementations that differed consistently from that specification。增加了部分新功能,如getters及setters,支持JSON以及在物件屬性上更完整的反射[5][6][7][8]
    6 2015年6月 多個新的概念和語言特性。ECMAScript Harmony將會以「ECMAScript 6」發佈。
    7 2016年6月[9] 多個新的概念和語言特性

    2004年6月Ecma组织发表了ECMA-357标准,它是ECMAScript的一个扩延,也被称为E4X(ECMAScript for XML)。

    方言

    许多应用程序支持ECMAScript,尤其是网页浏览器。浏览器中的ECMAScript实现添加了与文档对象模型的接口,可以通过脚本改变网页的内容、结构和样式。

    使用的應用程式 方言 相应ECMAScript版本
    Mozilla FirefoxGecko排版引擎SpiderMonkeyRhino[d 1] JavaScript 1.8.1[d 2] ECMA-262, 第五版
    Google ChromeV8排版引擎 JavaScript[d 2] ECMA-262, 第五版[d 3]
    Internet ExplorerTrident排版引擎 JScript 9.0 ECMA-262, 第五版[d 4]
    Oper ECMAScript[d 5] ECMA-262, 第五版[d 6]
    KHTML排版引擎,用在KDE Konqueror蘋果公司 Safari[d 7] JavaScript[d 2] ECMA-262, 第三版
    Appweb Web ServerSamba 4 Ejscript 0.9.9 ECMA-262, 第三版[d 8]
    Microsoft .NET Framework JScript .NET 8.0 ECMA-262, 第三版[d 9]
    Adobe FlashAdobe Flex ActionScript 3 ECMA-262, 第三版[d 10]
    Adobe Acrobat JavaScript 1.7[d 11] ECMA-262, 第三版
    通用腳本語言 DMDScript 1.15 ECMA-262
    OpenLaszlo平台 JavaScript[d 12] ECMA-262, 第三版[d 13]
    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 14] ECMA-262, 第三版
    KDE QtScript ECMA-262, 第三版
    Caja ECMA-262, 第三版[d 15]
    Objective-J ECMA-262, 第三版
    WMLScript ECMA-262, 第三版
    编译器生成的JavaScript应用程序 TypeScript ECMA-262,第三版
    1. ^ Mozilla能透過SpiderMonkey中的C語言Rhino Java),在部分第三方軟件,包括Yahoo! Widgets (Konfabulator)及Macintosh系統級的腳本語言實現JavaScript OSA.
    2. ^ 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, 第三版.
    3. ^ V8實現ECMAScript在ECMA-262,第三版: V8 JavaScript Engine.
    4. ^ Internet Explorer 9 已通过JScript 9.0实现对ECMA-262,第五版的支持, 详见JScript条目.
    5. ^ Opera 所落實的 implementation 包括了部分 JavaScript 及 JScript 的擴展: ECMAScript support in Opera Presto 2.10
    6. ^ 完整的 ECMAScript 5.1 支援,自從 Opera 11.51 以後的版本: Full ECMAScript (JavaScript) 5.1 support.
    7. ^ Safari使用基於KDE KJSJavaScriptCore函式庫。
    8. ^ This implementation asserts to support some extensions proposed in drafts of ECMAScript edition 4 (and now ECMAScript Harmony): Ejscript Overview 互联网档案馆存檔,存档日期2009-04-18..
    9. ^ 微軟聱稱,JScript 8.0支持"幾乎所有ECMAScript第三版的特徵",但沒有列出不支持的功能。
    10. ^ 除了支ECMA-262版本三以外,ActionScript 3同時支持ECMAScript版本四的擴展提議草案: The Kiwi Project: AS3 language 101 for C/C++ coders.
    11. ^ Adobe Acrobat 9.0使用SpiderMonkey 1.7 排版引擎: JavaScript for Acrobat API Reference 互联网档案馆存檔,存档日期2011-07-26.
    12. ^ OpenLaszlo both uses an ECMAScript dialect as noted in the Developer's Guide: Appendix B: ECMAScript 互联网档案馆存檔,存档日期2009-09-24. and can compile down to JavaScript targeted for the browser (the DHTML target).
    13. ^ As of version 4, OpenLaszlo implements standard ECMAScript edition 3 with some extensions proposed in drafts of ECMAScript edition 4: OpenLaszlo 4 互联网档案馆存檔,存档日期2010-01-31..
    14. ^ ANT Galio Browser 互联网档案馆存檔,存档日期2010-03-29.要求支持JavaScript 1.5
    15. ^ 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), ArrayString 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[10])
    JavaScript 2.0 (工作中) Harmony (工作中)

    參考文獻

    參見

    外部連結