
Netscape發(fā)明了JavaScript
當Netscape Navigator嶄露頭角時,Nombas開發(fā)了一個可以嵌入網(wǎng)頁中的CEnvi的版本。這些早期的試驗被稱為Espresso Page(濃咖啡般的頁面),它們代表了第一個在萬維網(wǎng)上使用的客戶端語言。而Nombas絲毫沒有料到它的理念將會成為萬維網(wǎng)的一塊重要基石。
當網(wǎng)上沖浪越來越流行時,對于開發(fā)客戶端腳本的需求也逐漸增大。此時,大部分因特網(wǎng)用戶還僅僅通過28.8 kbit/s的調(diào)制解調(diào)器連接到網(wǎng)絡,即便這時網(wǎng)頁已經(jīng)不斷地變得更大和更復雜。而更加加劇用戶痛苦的是,僅僅為了簡單的表單有效性驗證,就要與服務器進行多次地往返交互。設想一下,用戶填完一個表單,點擊提交按鈕,等待了30秒的處理后,看到的卻是一條告訴你忘記填寫一個必要的字段。
那時正處于技術(shù)革新最前沿的Netscape,開始認真考慮開發(fā)一種客戶端腳本語言來解決簡單的處理問題。
當時工作于Netscape的Brendan Eich,開始著手為即將在1995年發(fā)行的Netscape Navigator 2.0開發(fā)一個稱之為LiveScript的腳本語言,當時的目的是在瀏覽器和服務器(本來要叫它LiveWire)端使用它。Netscape與Sun及時完成LiveScript實現(xiàn)。
就在Netscape Navigator 2.0即將正式發(fā)布前,Netscape將其更名為JavaScript,目的是為了利用Java這個因特網(wǎng)時髦詞匯。Netscape的賭注最終得到回報,JavaScript從此變成了因特網(wǎng)的必備組件。
鼎足三分的天下大勢
因為JavaScript 1.0如此成功,Netscape在Netscape Navigator 3.0中發(fā)布了1.1版。恰巧那個時候,微軟決定進軍瀏覽器,發(fā)布了IE 3.0并搭載了一個JavaScript的克隆版,叫做JScript(這樣命名是為了避免與Netscape潛在的許可糾紛)。微軟步入Web瀏覽器領(lǐng)域的這重要一步雖然令其聲名狼藉,但也成為JavaScript語言發(fā)展過程中的重要一步。
在微軟進入后,有3種不同的JavaScript版本同時存在:Netscape Navigator 3.0中的JavaScript、IE中的JScript以及CEnvi中的ScriptEase。與C和其他編程語言不同的是,JavaScript并沒有一個標準來統(tǒng)一其語法或特性,而這3中不同的版本恰恰突出了這個問題。隨著業(yè)界擔心的增加,這個語言的標準化顯然已經(jīng)勢在必行。
標準化的開始
1997年,JavaScript 1.1作為一個草案提交給歐洲計算機制造商協(xié)會(ECMA)。第39技術(shù)委員會(TC39)被委派來“標準化一個通用、跨平臺、中立于廠商的腳本語言的語法和語義”(http://www.ecma-international.org/memento/TC39.htm)。由來自Netscape、Sun、微軟、Borland和其他一些對腳本編程感興趣的公司的程序員組成的TC39錘煉出了ECMA-261,該標準定義了名為ECMAScript的全新腳本語言。
在接下來的幾年里,國際標準化組織及國際電工委員會(ISO/IEC)也采納ECMAScript作為標準(ISO/IEC-16262)。從此,Web瀏覽器就開始努力(雖然有著不同的程度的成功和失?。CMAScript作為JavaScript實現(xiàn)的基礎(chǔ)。
Web瀏覽器中的ECMAScript的演變
含有JavaScript 1.1的Netscape Navigator 3.0在1996年發(fā)布。然后,JavaScript 1.1規(guī)范被作為一個新標準的草案被提交給EMCA。有了JavaScript轟動性的流行,Netscape十分高興地開始開發(fā)1.2版。但有一個問題,ECMA并未接受Netscape的草案。在Netscape Navigator 3.0發(fā)布后不久,微軟就發(fā)布了IE 3.0。該版本的IE含有JScript 1.0(微軟自己的JavaScript實現(xiàn)的名稱),原本計劃可以與JavaScript 1.1相提并論。然后,由于文檔不全以及一些不當?shù)闹貜吞匦?,JScript1.0遠遠沒有達到JavaScript 1.1的水平。
在ECMA-262第一版定稿之前,發(fā)布含有JavaScript 1.2的Netscape Navigator 4.0是在1997年,在那年晚些時候,ECMA-262標準被接受并標準化。因此,JavaScript 1.2并不和ECMAScript的第一版兼容,雖然ECMAScript應該基于JavaScript 1.1。
JScript的下一步是IE 4.0中加入的JScript 3.0(2.0版是隨IIS 3.0一起發(fā)布的,但并未包含在瀏覽器中)。微軟大力宣傳JScript 3.0是世界上第一個真正符合ECMA標準的腳本語言。而那時,ECMA-262還沒有最終定稿,所以JScript 3.0也遭受了和JavaScript 1.2同樣的命運-它還是沒能符合最終的ECMAScript標準。
Netscape選擇在Netscape Navigator 4.06中升級它的JavaScript實現(xiàn)。JavaScript 1.3使Netscape終于完全符合了ECMAScript第一版。Netscape加入了對Unicode標準的支持,并讓所有的對象保留了在JavaScript 1.2中引入的新特性的同時實現(xiàn)了平臺獨立。
當Netscape將它的源代碼作為Mozilla項目公布于眾時,本來計劃JavaScript 1.4將會嵌入到Netscape Navigator 5.0中。然而,一個冒進的決定-要完全從頭重新設計Netscape的代碼,破壞了這個工作。JavaScript 1.4僅僅作為一個Netscape Enterprise Server的服務器端腳本語言發(fā)布,以后也沒有被放入瀏覽器中。
如今,所有主流的Web瀏覽器都遵守ECMA-262第五版,同時ES6\ES7也已經(jīng)被廣泛的使用。