使用了這麼久的 JavaScript,你是否瞭解 JS 的歷史呢,如果你不是很瞭解的話,今天就讓我們一起來梳理一下 JS 誕生的歷史吧!
糟糕的上網體驗
讓我們回到 1995 年 JavaScript 誕生的前夕,當時人們上網衝浪可不像現在有這麼快的網速,開啟一個頁面需要好幾分鐘,點選頁面上的一個按鈕到頁面給出響應也需要半分鐘時間。
想象一下,你花了五分鐘開啟一個購物網站,這個網站要求你進行註冊,你填完了使用者名稱密碼等資訊後,點選了提交按鈕,焦急的等待著註冊成功可以開始剁手買買買,半分鐘過去了,頁面彈出了一條訊息:“密碼長度必須大於等於6位”。此刻你的內心是不是崩潰的,褲子都脫了你就給我看這個?(嗯。。。好像有點不太對,買個東西你脫什麼褲子,快穿上)
JavaScript 的誕生
當時走在技術革新前沿的 Netscape(網景)發現頻繁的與伺服器進行資料互動會給使用者帶來很不好的體驗,並且提出了他們的疑問:能不能在瀏覽器上完成這種簡單的表單驗證呢?答案是肯定的,Netscape 公司決定開發一種可以在使用者的瀏覽器上執行的客戶端語言來處理這種簡單的驗證。當時就職於Netscape的34歲程式設計師 布蘭登·艾克(Brendan Eich) 接受了這項任務,開始動手開發一個名為 LiveScript 的指令碼語言,終於在歷經了嘔心瀝血的10天之後,艾克完成了 LiveScript 的初步設計,他的設計思路是這樣的:
-
借鑑 C 語言的基本語法;
-
借鑑 Java 語言的資料型別和記憶體管理;
-
借鑑 Scheme 語言,將函式提升到“第一等公民”(first class)的地位;
-
借鑑 Self 語言,使用基於原型(prototype)的繼承機制;
總的來說,LiveScript 實際上是兩種語言風格的混合產物,簡化版的函數語言程式設計 && 簡化版物件導向程式設計。
為了能夠趕在 Netscape Navigator 2(網景瀏覽器2)釋出之前完成 LiveScript 的開發,Netscape 與 Sun 公司建立了一個開發者聯盟,要知道 Sun 就是大名鼎鼎的 Java 的發明者。終於時間來到了 Netscape Navigator 2 正式釋出的前夕,由於當時 Java 在業界引發了轟動,媒體正在大肆炒作 Java,為了能夠搭上 Java 的順風車,Netscape 公司決定臨時把 LiveScript 改名成 JavaScript,至此,JavaScript 第一次出現在了大眾的視線裡。
Microsoft (微軟)的攪局
由於搭載了 JavaScript 1.0 的 Netscape Navigator 2 獲得了使用者的好評,得到了市場的一致認可,Netscape 決定趁熱打鐵,在隨即釋出的 Netscape Navigator 3 上加上了升級後的 JavaScript 1.1,藉著這陣東風要把 Netscape 打造成行業的龍頭領袖。
這下微軟可坐不住了:“行呀你老弟,這就想當大哥了?還有沒有把我放在眼裡,不給你點顏色看看你是不知道什麼叫 hard(硬氣),還真以為我很軟?”。微軟決定也在自家的瀏覽器 Internet Explorer 3 上也加上 JavaScript ,但是抄也不能抄的太明顯是吧,就像抄試卷答案總不能把別人的名字也抄上,於是微軟給自家瀏覽器上的 JavaScript 起了個新名字,叫 JScript。
JavaScript 的標準化
由於微軟也在自家的瀏覽器上加上了 JS,這就意味著出現了兩個不同 JS 的版本,但是當時對於 JS 的實現語法和特性等沒有規定一個標準,這就可能造成兩個不同瀏覽器上的 JS 存在越來越大的差別,業界很擔心這個差異會日益擴大。(什麼?你問為什麼業界很擔心?你想想,兩個瀏覽器上的 JS 不一樣,就意味著同一個網頁要針對兩個瀏覽器寫兩份不同的程式碼,這還是兩個瀏覽器,如果是十個呢?這讓程式設計師怎麼活?還能不能愉快的上班划水了??)隨著業界的呼聲不斷加大,JS 的標準化終於被提上了議程,1997 年,一份以 JavaScript 1.1 為藍本的 JS 標準化建議提交到了歐洲計算機制造商協會(即大名鼎鼎的 ECMA,European Computer Manufacturers Association),該協會指定了 39 號技術委員會(TC39,Technical Committee #39) 來負責標準化一種通用、跨平臺、供應商中立的指令碼語言的語法和語義。TC39 由來自 Netscape、Sun、微軟等公司的程式設計師組成,他們經過數月的努力完成了 ECMA-262,定義一種名為 ECMAScript 的新指令碼語言的標準。自此以後,各瀏覽器開發商就以 ECMAScript 作為各自 JavaScript 實現的標準來開發各自瀏覽器上的指令碼語言。
世界從此又恢復了和平,peace~