行 1:
- aaaaa   + {{distinguish|Java|JScript}}  
-   + {{noteTA  
- sdf fsdaf   + |G1=IT  
    + |1=zh-hans:太阳微系统;zh-hk:太陽電腦;zh-tw:昇陽電腦;  
    + |2=zh-hans:地址栏; zh-tw:網址列;  
    + |3=zh-hans:在线;zh-hant:在線;zh-hk:線上;zh-tw:線上;zh-mo:線上;  
    + |4=zh-hans:脚本语言;zh-tw:程式語言;  
    + }}  
    + {{Infobox programming language  
    + | name = {{lang|en|JavaScript}}  
    + | paradigm = [[脚本语言]], [[面向对象]] ([[原型程式设计|基于原型]]), [[指令式编程|指令式]], [[函数式编程|函数式]]  
    + | year = 1995  
    + | logo = [[File:JavaScript-logo.png|200px]]  
    + | caption = Unofficial logo from JSConf EU 2011  
    + | designer = [[Brendan Eich]]  
    + | developer= [[网景通讯公司]],[[Mozilla基金会]]  
    + | latest_release_version = 1.8.5<ref>[https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.8.5]</ref>  
    + | latest_release_date = {{start date and age|2011|3|22}}  
    + | latest_preview_version =  
    + | latest_preview_date = {{start date and age|2010|7|27}}  
    + | typing = [[动态类型]], [[weak typing|weak]], [[duck typing|duck]]  
    + | implementations = [[KJS]], [[Rhino (JavaScript engine)|Rhino]], [[SpiderMonkey]], [[V8 (JavaScript引擎)|V8]], [[WebKit]], [[Presto#JavaScript引擎|Carakan]], [[Chakra (JScript引擎)|Chakra]]  
    + | influenced_by = [[C (programming language)|C]], [[Java (programming language)|Java]], [[Perl]], [[Python]], [[Scheme (programming language)|Scheme]], [[Self]]  
    + | influenced = [[ActionScript]], [[CoffeeScript]], [[Dart]], [[JScript .NET]], [[Objective-J]], [[QML]], TIScript,[[TypeScript]]  
    + | license =  
    + | website =  
    + | wikibooks = JavaScript  
    + }}  
    + {{Infobox file format  
    + | name = {{lang|en|JavaScript}}  
    + | icon = [[File:Javascript icon.svg|150px]]  
    + | logo =  
    + | screenshot =  
    + | caption =  
    + | extension = .js  
    + | mime = application/javascript<br />text/javascript&nbsp;(obsolete)<ref>[http://www.apps.ietf.org/rfc/rfc4329.html#sec-7.1 RFC 4329]</ref>  
    + | type code =  
    + | uniform type = com.netscape.javascript-source<ref>{{cite web  
    + | publisher = Apple Inc.  
    + | url = http://developer.apple.com/mac/library/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html  
    + | title = System-Declared Uniform Type Identifiers  
    + | work = Mac OS X Reference Library  
    + | accessdate = 2010-03-05  
    + }}</ref>  
    + | magic =  
    + | owner =  
    + | released =  
    + | latest release version =  
    + | latest release date =  
    + | genre = [[脚本语言]]  
    + | container for =  
    + | contained by =  
    + | extended from =  
    + | extended to =  
    + | standard =  
    + | url =  
    + }}  
    + {{lang|en|'''JavaScript'''}},一種[[直譯語言|直譯]]式程式語言,是一种[[动态类型]]、弱类型、[[原型程式設計|基于原型]]的语言,内置支持類別。它的[[直譯器]]被稱為[[JavaScript引擎]],為[[瀏覽器]]的一部份,廣泛用於[[客户端]]的[[腳本語言]],最早是在[[HTML]]網頁上使用,用来给HTML網頁增加動態功能。然而现在JavaScript也可被用于[[网络服务器]],如[[Node.js]]。  
       
- 士大夫   + 在1995年時,由[[網景]]公司的[[布兰登·艾克]],在[[網景領航員]]瀏覽器上首次設計實作而成。因為[[網景]]公司與[[昇陽]]公司合作,網景公司管理階層希望它外觀看起來像[[Java]],因此取名為JavaScript。但實際上它的語法風格與[[Self]]及[[Scheme]]較為接近。  
- 发的      
- sd   + 為了取得技術優勢,[[微軟]]推出了[[JScript]],CEnvi推出[[ScriptEase]],與JavaSript同樣可在瀏覽器上運行。為了統一規格,1997年,在ECMA(欧洲计算机制造商协会)的协调下,由Netscape、Sun、微软、Borland组成的工作组确定统一标准:ECMA-262。因為JavaScript相容於ECMA標準,因此也稱為[[ECMAScript]]<ref>http://www.ecma-international.org/publications/index.html</ref>。  
    + ==概論==  
    + 一般来说,完整的JavaScript包括以下几个部分:  
    + *ECMAScript,描述了该语言的语法和基本对象  
    + *文档对象模型(DOM),描述处理'''网页内容'''的方法和接口  
    + *浏览器对象模型(BOM),描述与'''浏览器'''进行交互的方法和接口  
       
    + 它的基本特点如下:  
    + *是一种解释性脚本语言(代码不进行预编译)。  
    + *主要用来向 HTML 页面添加'''交互行为'''。  
    + *可以直接嵌入 HTML 页面,但写成单独的js文件有利于结构和行为的分离。  
       
    + JavaScript常用来完成以下任务:  
    + *嵌入动态文本于[[HTML]]页面  
    + *对浏览器事件作出响应  
    + *读写[[HTML]]元素  
    + *在数据被提交到服务器之前验证数据  
    + *检测访客的浏览器信息  
    + *控制[[cookies]],包括创建和修改等  
       
    + == 历史 ==  
    + 它最初由[[网景公司]]的[[布兰登·艾克]]设计。JavaScript是[[甲骨文公司]]的注册商标。<ref>{{cite web|title=Sun Trademarks|url=http://www.sun.com/suntrademarks/|publisher=Sun Microsystems|accessdate=2007-11-08}}</ref>  
    + [[Ecma国际]]以JavaScript为基础制定了[[ECMAScript]]标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:[[ECMAScript]],[[文档对象模型]],[[浏览器对象模型]]。  
       
    + [[Netscape]]在最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。JavaScript最初受[[Java]]启发而开始设计的,目的之一就是“看上去像Java”<ref>{{cite web|title=TechVision: Innovators of the Net: Brendan Eich and JavaScript|url=http://web.archive.org/web/20080208124612/http://wp.netscape.com/comprod/columns/techvision/innovators_be.html|format=HTML|date=2009-3-19}}</ref>,因此语法上有类似之处,一些名称和命名规范也借自Java。但JavaScript的主要设计原则源自[[Self]]和[[Scheme]]<ref>{{cite web|title=ECMAScript Language Overview|url=http://www.ecmascript.org/es4/spec/overview.pdf|format=PDF|pages=p.4|date=2007-10-23}}</ref>。JavaScript与Java名称上的近似,是当时网景为了营销考虑与[[太陽電腦]]达成协议的结果。為了取得技術優勢,[[微軟]]推出了[[JScript]]來迎戰JavaScript的[[腳本語言]]。为了互用性,[[Ecma国际]](前身为[[欧洲计算机制造商协会]])建立了ECMA-262标准(ECMAScript)。现在两者都属于[[ECMAScript]]的实现。儘管JavaScript作為給非程式人員的[[腳本語言]],而非作為給程式人員的[[程式語言]]來推廣和宣傳,但是JavaScript具有非常豐富的特性。  
       
    + 发展初期,JavaScript的标准并未确定,同期有网景的JavaScript,微软的JScript和CEnvi的ScriptEase三足鼎立。1997年,在ECMA(欧洲计算机制造商协会)的协调下,由Netscape、Sun、微软、Borland组成的工作组确定统一标准:ECMA-262。  
       
    + == 常用函式庫 ==  
    + {{see|JavaScript函式庫}}  
       
    + == 特性 ==  
    + 不同於[[伺服器]]端腳本語言,例如[[PHP]]与[[Active Server Pages|ASP]],JavaScript主要被作为[[客户端]]腳本語言在用戶的[[瀏覽器]]上運行,不需要伺服器的支持。所以在早期[[程序員]]比較青睞於JavaScript以減少對伺服器的負擔,而與此同時也帶來另一個問題:安全性。而隨著伺服器的強壯,雖然現在的程序員更喜歡運行於伺服端的腳本以保證安全,但JavaScript仍然以其跨平台、容易上手等優勢大行其道。同时,有些特殊功能(如AJAX)必须依赖Javascript在客户端进行支持。隨著引擎如V8和框架如[[Node.js]]的發展,及其[[事件驅動]]及[[異步IO]]等特性,JavaScript逐漸被用來編寫[[伺服器]]端程式。  
       
    + == 编程 ==  
    + JavaScript是一種[[腳本語言]],其[[原始碼]]在發往客户端執行之前不需經過編譯,而是將文本格式的字符代碼發送給瀏覽器由瀏覽器解釋執行。[[直譯語言]]的弱點是安全性較差,而且在JavaScript中,如果一條執行不了,那麼下面的語言也無法執行。而其解決辦法就是於使用<code>try{}catch(){}</code>︰  
    + <source lang="javascript">  
    + console.log("a"); //-{zh-cn:这是正确的;zh-tw:這是正確的;}-  
    + console.log("b"); //-{zh-cn:这是正确的;zh-tw:這是正確的;}-  
    + console.logg("c"); //-{zh-cn:这是错误的,并且到这里会停下来;zh-tw:這不是正確的,並會到這裡時停下來;}-  
    + console.log("d"); //-{zh-cn:这是正确的;zh-tw:這是正確的;}-  
    + console.log("e"); //-{zh-cn:这是正确的;zh-tw:這是正確的;}-  
       
    + /*-{zh-cn:解决办法;zh-tw:解決辦法;}-*/  
    + try{console.log("a");}catch(e){} //-{zh-cn:这是正确的;zh-tw:這是正確的;}-  
    + try{console.log("b");}catch(e){} //-{zh-cn:这是正确的;zh-tw:這是正確的;}-  
    + try{console.logg("c");}catch(e){} //-{zh-cn:这是错误的,但是到这里不会停下来,而是跳过;zh-tw:這不是正確的,但不會停下來,而是跳過;}-  
    + try{console.log("d");}catch(e){} //-{zh-cn:这是正确的;zh-tw:這是正確的;}-  
    + try{console.log("e");}catch(e){} //-{zh-cn:这是正确的;zh-tw:這是正確的;}-  
    + </source>  
       
    + Javascript被歸類為直譯語言,因為目前主流的引擎都是每次執行時載入程式碼並解譯。V8是將所有程式碼解譯後再開始執行,其他引擎則是逐行解譯(SpiderMonkey會將解譯過的指令暫存,以提高效能,稱為[[即時編譯]]),但由於V8的核心部份多數用Javascript撰寫(而SpiderMonkey是用C++),因此在不同的測試上,兩者效能互有優劣。  
       
    + 與其相對應的是[[編譯語言]],例如[[C语言]],以編譯語言編寫的程式在執行之前,必須經過編譯,將程式碼編譯為機器碼,再加以執行。  
       
    + == Hello World ==  
    + 以下是一個簡單的JavaScript [[Hello World]]︰  
    + <source lang="javascript">  
    + <!DOCTYPE HTML>  
    + <html>  
    + <head>  
    + <title>簡單的JavaScript Hello World</title>  
    + <script type="text/javascript">  
    + document.write("Hello, world!"); // -{zh-cn:在浏览器视窗内直接显示;zh-tw:於瀏覽器視窗內直接顯示;}-  
    + alert("Hello, world!"); // -{zh-cn:弹窗显示;zh-tw:開啟對話視窗顯示;}-  
    + console.log("Hello, world!"); // -{zh-cn:在控制台(console)里显示,需要先开启开发工具控制台;zh-tw:於console裡顯示。IE下需要先开启开发工具控制台;}-  
    + </script>  
    + </head>  
    + <body>  
    + -{zh-cn:HTML 内容……;zh-tw:HTML 內文……;}-  
    + </body>  
    + </html>  
    + </source>  
       
    + 或是在[[瀏覽器]]的網址列(location bar)中使用<code>javascript:</code>,以互動方式表示:  
    + <source lang="javascript">  
    + javascript:alert("Hello world!");  
    + </source>  
       
    + == 版本 ==  
    + JavaScript 已經被 [[Netscape]] 公司提交給 [[ECMA]] 制定為標準,稱之為 [[ECMAScript]],標準編號 [[ECMA-262]]。目前最新版為 ECMA-262 5th Edition<ref>https://developer.mozilla.org/en/JavaScript/Language_Resources</ref>。符合 ECMA-262 3rd Edition 標準的實現有:  
    + *[[Microsoft]] 公司的 [[JScript]]  
    + *[[Mozilla]] 的 JavaScript-C(C語言實現),現名 [[SpiderMonkey]]  
    + *[[Mozilla]] 的 [[Rhino]](Java 實現)  
    + *[[Digital Mars]] 公司的 [[DMDScript]]  
    + *[[Google]] 公司的 [[V8 (JavaScript引擎)|V8]]  
    + *[[WebKit]]  
    + 目前 ECMA-262 4th Edition 正在開發的過程中,與其對應的 JavaScript 的版本為 JavaScript 2.0,目前也正在開發過程中。  
       
    + {| class="wikitable" style="font-size: smaller; text-align: center;"  
    + |-  
    + ! 版本 !! 發佈日期 !! 基於 !! [[Netscape Navigator]] !! [[Mozilla Firefox]] !! [[Internet Explorer]] !! [[Opera]] !! [[Safari]] !! [[Google Chrome]]  
    + |-  
    + | 1.0 || 1996年3月 || || 2.0 || || || || ||  
    + |-  
    + | 1.1 || 1996年8月 || || 3.0 || || 3.0 || || ||  
    + |-  
    + | 1.2 || 1997年6月 || || 4.0-4.05 || || || || ||  
    + |-  
    + | 1.3 || nowrap|1998年10月 || ECMA-262 1<sup>st</sup> edition / ECMA-262 2<sup>nd</sup> edition || 4.06-4.7x || || 4.0 || || ||  
    + |-  
    + | 1.4 || || || Netscape<br />Server || || || || ||  
    + |-  
    + | 1.5 || 2000年11月 || ECMA-262 3<sup>rd</sup> edition || 6.0 || 1.0 || 5.5 (JScript 5.5),<br />6 (JScript 5.6),<br />7 (JScript 5.7),<br />8 (JScript 6) || 6.0,<br />7.0,<br />8.0,<br />9.0<br /> || ||  
    + |-  
    + | 1.6 || 2005年11月 || 1.5 + Array extras + Array and String generics + E4X || || 1.5 || || || 3.0, 3.1 ||  
    + |-  
    + | 1.7 || 2006年10月 || 1.6 + Pythonic generators + Iterators + let || || 2.0 || || || 3.2, 4.0 || 1.0  
    + |-  
    + | 1.8 || 2008年6月 || 1.7 + Generator expressions + Expression closures || || 3.0 || || 11.50 || ||  
    + |-  
    + | 1.8.1 || || 1.8 + Native [[JSON]] support + Minor Updates || || 3.5 || || || ||  
    + |-  
    + | 1.8.2 || 2009年6月22日 || 1.8.1 + Minor updates || || 3.6 || || || ||  
    + |-  
    + | 1.8.5 || 2010年7月27日 || 1.8.1 + [[ECMAScript]] 5 Compliance || || 4 || 9 || 11.60 || ||  
    + |}  
       
    + <ref>{{cite web|author=John Resig |url=http://ejohn.org/blog/versions-of-javascript |title=Versions of JavaScript |publisher=Ejohn.org |date= |accessdate=2009-05-19}}</ref>  
       
    + == 比較 ==  
    + {| class="wikitable" width=100%  
    + |+'''ECMA'''  
    + ! 版本  
    + ! 說明  
    + ! 實現  
    + |-  
    + | nowrap|ECMA v1  
    + | 標準化了JavaScript1.1的基本特性,並添加了一些新特性。沒有標準化switch語句和正則表達式。  
    + | 由Netscape 4.5和IE 4實現。  
    + |-  
    + | ECMA v2  
    + | ECMA v1的維護版本,只添加了說明。  
    + | 由Netscape 4.5和IE 4實現。  
    + |-  
    + | ECMA v3  
    + | 標準化了switch語句、異常處理和正則表達式。  
    + | 由Mozilla、Netscape 6和IE 5.5實現。  
    + |}  
       
    + == 參見 ==  
    + {{Wikibooks}}  
    + *[[腳本語言]]  
    + *[[DMDScript]]  
    + *[[ECMAScript]]  
    + *[[JavaScript引擎]]  
    + *[[JScript]]  
    + *[[AJAX]]  
    + *[[JavaScript函式庫]]  
       
    + == 參考文獻 ==  
    + {{Reflist}}  
       
    + == 外部連結 ==  
    + *[http://www.mozilla.org/js About JavaScript] Mozilla.org上的資源{{en}}{{zh-cn}}{{ja}}  
    + *[http://irw.ncut.edu.tw/peterju/jscript.html JavaScript Note]{{zh-tw}}  
    + *[http://www.w3schools.com/js/default.asp W3Schools上的JavaScript線上教學]{{en}}  
       
    + {{程序设计语言|JavaScript}}  
    + {{網頁技術與標準}}  
    + {{ECMAScript}}  
       
    + [[Category:腳本語言]]  
    + [[Category:JavaScript程式語言]]