複製鏈接
請複製以下鏈接發送給好友

ECMAScript

鎖定
ECMAScript是一種由Ecma國際(前身為歐洲計算機制造商協會,European Computer Manufacturers Association)通過ECMA-262標準化的腳本程序設計語言。這種語言在萬維網上應用廣泛,它往往被稱為JavaScriptJScript,所以它可以理解為是JavaScript的一個標準,但實際上後兩者是ECMA-262標準的實現和擴展。
中文名
ECMAScript
外文名
European Computer Manufacturers Association Script
類    別
腳本程序設計語言
特    點
萬維網上應用廣泛
簡    稱
ES
標準化組織
ECMA

目錄

ECMAScript簡介

ECMAScript是由網景的布蘭登·艾奇開發的一種腳本語言的標準化規範;最初命名為Mocha,後來改名為LiveScript,最後重命名為JavaScript。1995年12月,昇陽與網景聯合發表了JavaScript。1996年11月,網景公司將JavaScript提交給歐洲計算機制造商協會進行標準化。ECMA-262的第一個版本於1997年6月被Ecma組織採納。ECMA Script是ECMA-262標準化的腳本語言的名稱。儘管JavaScript和JScript與ECMAScript兼容,但包含超出ECMA Script的功能。
ECMAScript是一種可以在宿主環境中執行計算並能操作可計算對象的基於對象的程序設計語言。ECMAScript最先被設計成一種Web腳本語言,用來支持Web頁面的動態表現以及為基於Web的客户機—服務器架構提供服務器端的計算能力。但作為一種腳本語言, ECMAScript具備同其他腳本語言一樣的性質,即“用來操縱、定製一個已存在系統所提供的功能,以及對其進行自動化”。 [1] 

ECMAScript歷史

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完成。
截止發佈日期,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進程 解釋了新特性從開始到最終被語言採用所經歷的各種階段。
2017年6月,ECMAScript發佈第 8 個版本ES.Next,這個是不穩定版本。 [2] 

ECMAScript關鍵字

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,DOMBOM三者組成的。 所以説,在JavaScript,JScript和ActionScript中聲明變量,操作數組等語法完全一樣,因為它們都是ECMAScript。但是在操作瀏覽器對象等方面又有各自獨特的方法,這些都是各自語言的擴展。
參考資料