JavaScript自1995年誕生以來已過去了16個年頭,如今全世界無數的網頁在依靠她完成各種關鍵任務,JavaScript曾在Tiobe發布的編程語言排行榜中排到了第8名,緊隨C#,JavaScript從過去裝飾性的一種腳本語言轉變為主流的編程語言,人們用它來開發更大更復雜的程序,這就需要Web開發人員更深入的了解JavaScript,了解它的過去、現在和未來。
JavaScript歷史簡述 大概在1992年,一家稱作Nombas的公司開始開發一種叫做C減減(C-minus-minus,簡稱Cmm)的嵌入式腳本語言。這個腳本語言捆綁在一個叫做CEnvi的共享軟件產品中,當Netscape Navigator嶄露頭角時,Nombas開發了一個可以嵌入網頁中的CEnvi的版本。這些早期的試驗稱為Espresso Page(濃咖啡般的頁面),它們代表了第一個在萬維網上使用的客戶端腳本語言。而Nombas絲毫沒有料到它的理念將會成為因特網的一塊重要基石。
當網上沖浪越來越流行時,對於開發客戶端腳本的需求也逐漸增大。當時工作於Netscape的Brendan Eich,開始著手為即將在1995年發行的Netscape Navigator 2.0開發一個稱之為LiveScript的腳本語言,當時的目的是同時在浏覽器和服務器端使用它。Netscape與Sun公司聯手及時完成LiveScript實現。就在Netscape Navigator 2.0即將正式發布前,Netscape將其更名為JavaScript,目的是為了利用Java這個因特網時髦詞匯。Netspace的賭注最終得到回報,JavaScript從此變成了因特網的必備組件。
ECMAScript標准 因為JavaScript 1.0如此成功,Netscape在Netscape Navigator 3.0中發布了1.1版。恰巧那個時候,微軟決定進軍浏覽器,發布了IE 3.0 並搭載了一個JavaScript的克隆版,叫做JScript(這樣命名是為了避免與Netscape潛在的許可糾紛)。微軟步入Web浏覽器領域的這重要一步雖然令其聲名狼藉,但也成為JavaScript語言發展過程中的重要一步。
在微軟進入後,有3種不同的JavaScript版本同時存在:Netscape Navigator 3.0中的JavaScript、IE中的JScript以及CEnvi中的ScriptEase。與C和其他編程語言不同的是,JavaScript並沒有一個標准來統一其語法或特性,而這3種不同的版本恰恰突出了這個問題。隨著業界擔心的增加,這個語言標准化顯然已經勢在必行。1997年,JavaScript 1.1作為一個草案提交給歐洲計算機制造商協會(ECMA),由來自Netscape、Sun、微軟、Borland和其他一些對腳本編程感興趣的公司的程序員組成的TC39錘煉出了ECMA-262,該標准定義了叫做ECMAScript的全新腳本語言。從此,Web浏覽器就開始努力(雖然有著不同程度的成功和失敗)將ECMAScript作為JavaScript實現的基礎。
盡管ECMAScript是一個重要的標准,但它並不是JavaScript唯一的部分,當然,也不是唯一被標准化的部分。實際上,一個完整的JavaScript實現是由以下3個不同部分組成的
•核心(ECMAScript)——JavaScript的核心ECMAScript描述了該語言的語法和基本對象
•文檔對象模型(DOM)——DOM描述了處理網頁內容的方法和接口
•浏覽器對象模型(BOM)——BOM描述了與浏覽器進行交互的方法和接口
JavaScript版本歷史 由於歷史原因及技術的不斷發展,JavaScript版本眾多,各種浏覽器的實現情況也不一樣,筆者根據各方面的信息整理了一下JavaScript的各個版本及對應浏覽器的實現情況,這也是這篇文章的主要目的,歡迎大家提供意見,一起完善。
版本
發布日期
基於
Netscape Navigator
Mozilla Firefox
Internet Explorer
Opera
Safari
Chrome
1.0
1996年3月
2.0
3.0 (JScript 1.0)(1996年8月)
1.1
1996年8月
3.0
3.0 (JScript 2.0)(1997年1月)
1.2
1997年6月
4.0-4.05
1.3
1998年10月
ECMA-262 第一版 (1997年6月發布)/ ECMA-262 第二版 (1998年6月發布)
4.06-4.7x
4.0 (JScript 3.0)(1997年10月)
1.4
Netscape Server Only
JScript 4.0 (Visual Studio 6, no IE release)
5.0 (JScript 5.0)(1999年3月)
1.5
2000年11月
ECMA-262 第三版 (1999年12月發布)
6.0
1.0
5.5 (JScript 5.5)(2000年7月)
6 (JScript 5.6)(2001年10月)
7 (JScript 5.7)(2006年10月)
8 (JScript 5.8)(2009年3月)
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
1.8.1
2009年6月
1.8 + Native JSON support + Minor Updates
3.5
1.8.5
2010年7月
1.8.1 + ECMAScript 5 Compliance
4
9
2.0
制定中
ECMAScript Harmony
特別說明:
1.當Netscape 將它的源代碼作為Mozilla 項目公布於眾時,本來計劃JavaScript 1.4 將會嵌入到Netscape Navigator 5.0 中。然而,一個冒進的決定——要完全從頭重新設計Netscape 的代碼,破壞了這個工作。 JavaScript 1.4 僅僅作為一個Netscape Enterprise Server 的服務器端腳本語言發布,以後也沒有被放入浏覽器中。
2.E4X(ECMAScript for XML)是一種在ECMAScript(見ECMA-262,包括ActionScript、JavaScript等語言實現)標准的基礎上加入的動態XML支持的程序語言擴展。E4X的目的是作為DOM接口之外的另一個選擇。它可以使程序員在ECMAScript腳本中通過更簡潔的語法來訪問XML文檔。同時,它也為實現腳本中XML可視化提供了一種新方法。
3.從 IE 5.5 版本發布開始,微軟就沒有更新過它基於浏覽器的JavaScript實現策略,但在.NET Framework 中包含了JScript.NET作為ECMAScript 4的實現,其中添加了一些特定於微軟的功能,它不能作為客戶端腳本語言在IE中使用,只能用在ASP.NET中作為服務器端語言或者獨立應用程序來用。與其它的JavaScript版本不同,JSscript.NET是編譯型語言,可以獨立的可執行文件。
4.ECMAScript Harmony其實是包含JavaScript 2.0在內的ECMAScript第四版的一個臨時新命名(未來可能是ECMAScript第六版?),ECMAScript第五版則是獨立開發的ECMAScript 3.1語言的後期命名。
5.如今,所有的主流 Web 浏覽器都遵守 ECMA-262 第三版,即實現的是JavaScript 1.5版,JavaScript 1.6-1.9只是ECMAScript (JavaScript on Gecko)升級至JavaScript 2.0的臨時代號。
檢測JavaScript版本
點擊測試按鈕可以測試你當前浏覽器支持的JavaScrpt版本,在IE8中測試,提示說支持的版本是1.3,奇怪?
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
參考內容:
1.JavaScript高級程序設計 2.http://en.wikipedia.org/wiki/Javascript#History 3.http://en.wikipedia.org/wiki/ECMAScript#Version_correspondence 4.http://ejohn.org/blog/versions-of-javascript/ 5.https://developer.mozilla.org/en/JavaScript/Guide/JavaScript_Overview 作者:夢想 出處:http://www.cnblogs.com/lhb25