ECMAScript

ECMAScript

ECMAScript是一種由Ecma國際(前身為歐洲計算機製造商協會,英文名稱是European Computer Manufacturers Association)通過ECMA-262標準化的腳本程序設計語言。這種語言在萬維網上應用廣泛,它往往被稱為JavaScript或JScript,但實際上后兩者是ECMA-262標準的實現和擴展。

讀音


[ek - ma - script]
讀音來自 Professional JavaScript for Web Developers 2nd Edition
原文:ECMAScript (often pronounced as “ ek - ma - script “ )

歷史


1998年6月,ECMAScript 2.0版發布。
1999年12月,ECMAScript 3.0版發布,成為JavaScript的通行標準,得到了廣泛支持。
2007年10月,ECMAScript 4.0版草案發布,對3.0版做了大幅升級,預計次年8月發布正式版本。草案發布后,由於4.0版的目標過於激進,各方對於是否通過這個標準,發生了嚴重分歧。以Yahoo、MicrosoftGoogle為首的大公司,反對JavaScript的大幅升級,主張小幅改動;以JavaScript創造者Brendan Eich為首的Mozilla公司,則堅持當前的草案。
2008年7月,由於對於下一個版本應該包括哪些功能,各方分歧太大,爭論過於激進,ECMA開會決定,中止ECMAScript 4.0的開發,將其中涉及現有功能改善的一小部分,發布為ECMAScript 3.1,而將其他激進的設想擴大範圍,放入以後的版本,由於會議的氣氛,該版本的項目代號起名為Harmony(和諧)。會後不久,ECMAScript 3.1就改名為ECMAScript 5。
2009年12月,ECMAScript 5.0版正式發布。Harmony項目則一分為二,一些較為可行的設想定名為JavaScript.next繼續開發,後來演變成ECMAScript 6;一些不是很成熟的設想,則被視為JavaScript.next.next,在更遠的將來再考慮推出。
2011年6月,ECMAscript 5.1版發布,並且成為ISO國際標準(ISO/IEC 16262:2011)。
2013年3月,ECMAScript 6草案凍結,不再添加新功能。新的功能設想將被放到ECMAScript 7。
2013年12月,ECMAScript 6草案發布。然後是12個月的討論期,聽取各方反饋。
2015年6月17日,ECMAScript 6發布正式版本,即ECMAScript 2015。
ECMA的第39號技術專家委員會(Technical Committee 39,簡稱TC39)負責制訂ECMAScript標準,成員包括Microsoft、Mozilla、Google等大公司。TC39的總體考慮是,ES5與ES3基本保持兼容,較大的語法修正和新功能加入,將由JavaScript.next完成。

版本


至今為止有五個ECMA-262版本。
v1 1997年06月 首版
v2 1998年06月 格式修正,以使得其形式與ISO/IEC16262國際標準一致
v3 1999年12月 強大的正則表達式,更好的文字鏈處理,新的控制指令,異常處理,錯誤定義更加明確,數輸出的格式化及其它改變
v4 未完成...可能更明確的類的定義,命名空間等等...
* 2004年6月歐洲計算機製造商協會發表了ECMA-357標準,它是ECMAScript的一個擴延,它也被稱為E4X(ECMAScript for XML)。
v5 2009年12月發布
ECMA-262的關鍵字
ECMA-262定義了ECMAScript支持的一套關鍵字,這些關鍵字標識了ECMAScript語句的開頭和/或結尾。根據規定,關鍵字是保留的,不能用作變數名或函數名。下面是ECMAScript關鍵字的完整列表:
break else new var typeof
case finally return void
catch for switch while
default if throw delete
in try do instanceof
如果把關鍵字用作變數名或函數名,可能得到諸如“Indetifier expected”(應該有標識符)這樣的錯誤信息。
ECMA-262的保留字
ECMAScript定義了一套保留字,保留字在某種意義上是為了將來的而保留的單詞。因此,保留字不能被用作變數名或函數名。ECMA-262第3版中保留字的完整列表如下:
abstract enum int short
boolean export interface static
byte extends long super char final
native synchronized class float package
throws const goto private transient debugger
implements protected volatile double
import public
如果將保留字用作變數名或函數名,那麼除非將來的瀏覽器實現了該保留字,否則很可能收不到任何錯誤消息。當瀏覽器將其實現后,該單詞被看作關鍵字,如此將出現關鍵字錯誤。
1995年Netscape公司發布的Netscape Navigator 2.0中,發布了與Sun聯合開發的JavaScript 1.0並且大獲成功,並且隨後的3.0版本中發布了JavaScript1.1,恰巧這時微軟進軍瀏覽器市場,IE 3.0搭載了一個JavaScript的克隆版-JScript,再加上Cenvi的ScriptEase(也是一種客戶端腳本語言),導致了三種不同版本的客戶端腳本語言同時存在。為了建立語言的標準化,1997年JavaScript 1.1作為草案提交給歐洲計算機製造商協會(ECMA),第三十九技術委員會(TC39)被委派來“標準化一個通用的,跨平台的,中立於廠商的腳本語言的語法和語意標準”。最後在Netscape、Sun、微軟、Borland等公司的參與下制訂了ECMA-262,該標準定義了叫做ECMAScript的全新腳本語言。
從此以後的Javscript,JScript,ActionScript等腳本語言都是基於ECMAScript標準實現的。
所以,ECMAScript實際上是一種腳本在語法和語義上的標準。實際上JavaScript是由ECMAScript,DOM和BOM三者組成的。所以說,在JavaScript,JScript和ActionScript中聲明變數,操作數組等語法完全一樣,因為它們都是ECMAScript。但是在操作瀏覽器對象等方面又有各自獨特的方法,這些都是各自語言的擴展。