ECMAScript

ECMAScript

ECMAScript是一種由Ecma國際(前身為歐洲計算機製造商協會,英文名稱是European Computer Manufacturers Association)通過ECMA-262標準化的腳本程式設計語言。這種語言在全球資訊網上套用廣泛,它往往被稱為JavaScript或JScript,所以它可以理解為是JavaScript的一個標準,但實際上後兩者是ECMA-262標準的實現和擴展。

解釋

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

讀音

[ek - ma - script]

讀音來自 Professional JavaScript for Web Developers 2nd Edition

原文:ECMAScript (often

歷史

1998年6月,ECMAScript 2.0版發布。

1999年12月,ECMAScript 3.0版發布,成為JavaScript的通行標準,得到了廣泛支持。

2007年10月,ECMAScript 4.0版草案發布,對3.0版做了大幅升級,預計次年8月發布正式版本。草案發布後,由於4.0版的目標過於激進,各方對於是否通過這個標準,發生了嚴重分歧。以Yahoo、Microsoft、Google為首的大公司,反對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版本。

ECMAScript 1

1997年06月 首版

ECMAScript 2

1998年06月 格式修正,以使得其形式與ISO/IEC16262國際標準一致

ECMAScript 3

1999年12月 強大的正則表達式,更好的文字鏈處理,新的控制指令,異常處理,錯誤定義更加明確,數輸出的格式化及其它改變

ECMAScript 4

未完成...可能更明確的類的定義,命名空間等等...

* 2004年6月歐洲計算機製造商協會發表了ECMA-357標準,它是ECMAScript的一個擴延,它也被稱為E4X(ECMAScript for XML)。

ECMAScript 5

2009年12月發布

ECMAScript 2015

2015年6月17日發布。

截止發布日期,JavaScript的官方名稱是ECMAScript 2015,Ecma國際意在更頻繁地發布包含小規模增量更新的新版本,下一版本將於2016年發布,命名為ECMAScript 2016。從現在開始,新版本將按照ECMAScript+年份的形式發布。

ES6是繼ES5之後的一次主要改進,語言規範由ES5.1時代的245頁擴充至600頁。ES6增添了許多必要的特性,例如:模組和類,以及一些實用特性,例如Maps、Sets、Promises、生成器(Generators)等。儘管ES6做了大量的更新,但是它依舊完全向後兼容以前的版本,標準化委員會決定避免由不兼容版本語言導致的“web體驗破碎”。結果是,所有老代碼都可以正常運行,整個過渡也顯得更為平滑,但隨之而來的問題是,開發者們抱怨了多年的老問題依然存在。

截止發布日期,沒有一款完全支持ES6的JavaScript代理(無論是瀏覽器環境還是伺服器環境),所以熱衷於使用語言最新特性的開發者需要將ES6代碼轉譯為ES5代碼。等到主流瀏覽器完全實現ES6特性大概需要一年左右的時間,若想一睹各代理對於ES6特性的支持情況,我們推薦大家參考由 kangax 維護的 ECMAScript Compatibility Table 。

ECMAScript 2016的制定工作已經啟動,許多 草案 已被提交到委員會,包括以下這些:異步方法、定型對象、並行JavaScript、類修飾符以及observables。雖然委員會正在積極評估這些特性,但我們無法預知它們的未來,其中一些會加入到下一版規範,另一些會加入未來的其它規範,剩下的將最終被遺棄。 TC39進程 解釋了新特性從開始到最終被語言採用所經歷的各種階段。

關鍵字

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

如果把關鍵字用作變數名或函式名,可能得到諸如“Identifier 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的全新腳本語言。

從此以後的Javascript,JScript,ActionScript等腳本語言都是基於ECMAScript標準實現的。

所以,ECMAScript實際上是一種腳本在語法和語義上的標準。實際上JavaScript是由ECMAScript,DOM和BOM三者組成的。 所以說,在JavaScript,JScript和ActionScript中聲明變數,運算元組等語法完全一樣,因為它們都是ECMAScript。但是在操作瀏覽器對象等方面又有各自獨特的方法,這些都是各自語言的擴展。

相關詞條

相關搜尋

熱門詞條

聯絡我們