JavaScript的發(fā)展史

一劝堪、誕生

JavaScript 因為互聯(lián)網(wǎng)而生,緊跟著瀏覽器的出現(xiàn)而問世弹囚〕啵回顧它的歷史,就要從瀏覽器的歷史講起。

1990年底蛮穿,歐洲核能研究組織(CERN)科學家 Tim Berners-Lee庶骄,在全世界最大的電腦網(wǎng)絡(luò)——互聯(lián)網(wǎng)的基礎(chǔ)上,發(fā)明了萬維網(wǎng)(World Wide Web)践磅,從此可以在網(wǎng)上瀏覽網(wǎng)頁文件单刁。最早的網(wǎng)頁只能在操作系統(tǒng)的終端里瀏覽,也就是說只能使用命令行操作府适,網(wǎng)頁都是在字符窗口中顯示羔飞,這當然非常不方便。

1992年底檐春,美國國家超級電腦應(yīng)用中心(NCSA)開始開發(fā)一個獨立的瀏覽器逻淌,叫做 Mosaic。這是人類歷史上第一個瀏覽器疟暖,從此網(wǎng)頁可以在圖形界面的窗口瀏覽卡儒。

1994年10月,NCSA 的一個主要程序員 Marc Andreessen 聯(lián)合風險投資家 Jim Clark俐巴,成立了 Mosaic 通信公司(Mosaic Communications)骨望,不久后改名為 Netscape。這家公司的方向欣舵,就是在 Mosaic 的基礎(chǔ)上锦募,開發(fā)面向普通用戶的新一代的瀏覽器 Netscape Navigator。

1994年12月邻遏,Navigator 發(fā)布了1.0版糠亩,市場份額一舉超過90%。

Netscape 公司很快發(fā)現(xiàn)准验,Navigator 瀏覽器需要一種可以嵌入網(wǎng)頁的腳本語言赎线,用來控制瀏覽器行為。當時糊饱,網(wǎng)速很慢而且上網(wǎng)費很貴垂寥,有些操作不宜在服務(wù)器端完成。比如另锋,如果用戶忘記填寫“用戶名”滞项,就點了“發(fā)送”按鈕,到服務(wù)器再發(fā)現(xiàn)這一點就有點太晚了夭坪,最好能在用戶發(fā)出數(shù)據(jù)之前文判,就告訴用戶“請?zhí)顚懹脩裘薄_@就需要在網(wǎng)頁中嵌入小程序室梅,讓瀏覽器檢查每一欄是否都填寫了戏仓。

管理層對這種瀏覽器腳本語言的設(shè)想是:功能不需要太強疚宇,語法較為簡單,容易學習和部署赏殃。那一年敷待,正逢 Sun 公司的 Java 語言問世,市場推廣活動非常成功仁热。Netscape 公司決定與 Sun 公司合作榜揖,瀏覽器支持嵌入 Java 小程序(后來稱為 Java applet)。但是抗蠢,瀏覽器腳本語言是否就選用 Java举哟,則存在爭論。后來物蝙,還是決定不使用 Java,因為網(wǎng)頁小程序不需要 Java 這么“重”的語法敢艰。但是诬乞,同時也決定腳本語言的語法要接近 Java,并且可以支持 Java 程序钠导。這些設(shè)想直接排除了使用現(xiàn)存語言震嫉,比如 Perl、Python 和 TCL牡属。

1995年票堵,Netscape 公司雇傭了程序員 Brendan Eich 開發(fā)這種網(wǎng)頁腳本語言。Brendan Eich 有很強的函數(shù)式編程背景逮栅,希望以 Scheme 語言(函數(shù)式語言鼻祖 LISP 語言的一種方言)為藍本悴势,實現(xiàn)這種新語言。

1995年5月措伐,Brendan Eich 只用了10天特纤,就設(shè)計完成了這種語言的第一版。它是一個大雜燴侥加,語法有多個來源捧存。

基本語法:借鑒 C 語言和 Java 語言。
數(shù)據(jù)結(jié)構(gòu):借鑒 Java 語言担败,包括將值分成原始值和對象兩大類昔穴。
函數(shù)的用法:借鑒 Scheme 語言和 Awk 語言,將函數(shù)當作第一等公民提前,并引入閉包吗货。
原型繼承模型:借鑒 Self 語言(Smalltalk 的一種變種)。
正則表達式:借鑒 Perl 語言狈网。
字符串和數(shù)組處理:借鑒 Python 語言卿操。

為了保持簡單警检,這種腳本語言缺少一些關(guān)鍵的功能,比如塊級作用域害淤、模塊扇雕、子類型(subtyping)等等,但是可以利用現(xiàn)有功能找出解決辦法窥摄。這種功能的不足镶奉,直接導致了后來 JavaScript 的一個顯著特點:對于其他語言,你需要學習語言的各種功能崭放,而對于 JavaScript哨苛,你常常需要學習各種解決問題的模式。而且由于來源多樣币砂,從一開始就注定建峭,JavaScript 的編程風格是函數(shù)式編程和面向?qū)ο缶幊痰囊环N混合體。

Netscape 公司的這種瀏覽器腳本語言决摧,最初名字叫做 Mocha亿蒸,1995年9月改為 LiveScript。12月掌桩,Netscape 公司與 Sun 公司(Java 語言的發(fā)明者和所有者)達成協(xié)議边锁,后者允許將這種語言叫做 JavaScript。這樣一來波岛,Netscape 公司可以借助 Java 語言的聲勢茅坛,而 Sun 公司則將自己的影響力擴展到了瀏覽器。

之所以起這個名字则拷,并不是因為 JavaScript 本身與 Java 語言有多么深的關(guān)系(事實上贡蓖,兩者關(guān)系并不深,詳見下節(jié))煌茬,而是因為 Netscape 公司已經(jīng)決定摩梧,使用 Java 語言開發(fā)網(wǎng)絡(luò)應(yīng)用程序,JavaScript 可以像膠水一樣宣旱,將各個部分連接起來仅父。當然,后來的歷史是 Java 語言的瀏覽器插件失敗了浑吟,JavaScript 反而發(fā)揚光大笙纤。

1995年12月4日,Netscape 公司與 Sun 公司聯(lián)合發(fā)布了 JavaScript 語言组力,對外宣傳 JavaScript 是 Java 的補充省容,屬于輕量級的 Java,專門用來操作網(wǎng)頁燎字。

1996年3月腥椒,Navigator 2.0 瀏覽器正式內(nèi)置了 JavaScript 腳本語言阿宅。

二、JavaScript 與 Java 的關(guān)系

這里專門說一下 JavaScript 和 Java 的關(guān)系笼蛛。它們是兩種不一樣的語言洒放,但是彼此存在聯(lián)系。

JavaScript 的基本語法和對象體系滨砍,是模仿 Java 而設(shè)計的往湿。但是,JavaScript 沒有采用 Java 的靜態(tài)類型惋戏。正是因為 JavaScript 與 Java 有很大的相似性领追,所以這門語言才從一開始的 LiveScript 改名為 JavaScript∠旆辏基本上绒窑,JavaScript 這個名字的原意是“很像Java的腳本語言”。

JavaScript 語言的函數(shù)是一種獨立的數(shù)據(jù)類型舔亭,以及采用基于原型對象(prototype)的繼承鏈些膨。這是它與 Java 語法最大的兩點區(qū)別。JavaScript 語法要比 Java 自由得多分歇。

另外傀蓉,Java 語言需要編譯欧漱,而 JavaScript 語言則是運行時由解釋器直接執(zhí)行职抡。

總之,JavaScript 的原始設(shè)計目標是一種小型的误甚、簡單的動態(tài)語言缚甩,與 Java 有足夠的相似性,使得使用者(尤其是 Java 程序員)可以快速上手窑邦。

三擅威、JavaScript 與 ECMAScript 的關(guān)系

1996年8月,微軟模仿 JavaScript 開發(fā)了一種相近的語言冈钦,取名為JScript(JavaScript 是 Netscape 的注冊商標郊丛,微軟不能用),首先內(nèi)置于IE 3.0瞧筛。Netscape 公司面臨喪失瀏覽器腳本語言的主導權(quán)的局面厉熟。

1996年11月,Netscape 公司決定將 JavaScript 提交給國際標準化組織 ECMA(European Computer Manufacturers Association)较幌,希望 JavaScript 能夠成為國際標準揍瑟,以此抵抗微軟。ECMA 的39號技術(shù)委員會(Technical Committee 39)負責制定和審核這個標準乍炉,成員由業(yè)內(nèi)的大公司派出的工程師組成绢片,目前共25個人滤馍。該委員會定期開會,所有的郵件討論和會議記錄底循,都是公開的巢株。

1997年7月,ECMA 組織發(fā)布262號標準文件(ECMA-262)的第一版此叠,規(guī)定了瀏覽器腳本語言的標準纯续,并將這種語言稱為 ECMAScript。這個版本就是 ECMAScript 1.0 版灭袁。之所以不叫 JavaScript猬错,一方面是由于商標的關(guān)系,Java 是 Sun 公司的商標茸歧,根據(jù)一份授權(quán)協(xié)議倦炒,只有 Netscape 公司可以合法地使用 JavaScript 這個名字,且 JavaScript 已經(jīng)被 Netscape 公司注冊為商標软瞎,另一方面也是想體現(xiàn)這門語言的制定者是 ECMA逢唤,不是 Netscape,這樣有利于保證這門語言的開放性和中立性涤浇。因此鳖藕,ECMAScript 和 JavaScript 的關(guān)系是,前者是后者的規(guī)格只锭,后者是前者的一種實現(xiàn)著恩。在日常場合,這兩個詞是可以互換的蜻展。

ECMAScript 只用來標準化 JavaScript 這種語言的基本語法結(jié)構(gòu)喉誊,與部署環(huán)境相關(guān)的標準都由其他標準規(guī)定,比如 DOM 的標準就是由 W3C組織(World Wide Web Consortium)制定的纵顾。

ECMA-262 標準后來也被另一個國際標準化組織 ISO(International Organization for Standardization)批準伍茄,標準號是 ISO-16262。

四施逾、JavaScript 的版本

1997年7月敷矫,ECMAScript 1.0發(fā)布。

1998年6月汉额,ECMAScript 2.0版發(fā)布曹仗。

1999年12月,ECMAScript 3.0版發(fā)布闷愤,成為 JavaScript 的通行標準整葡,得到了廣泛支持。

2007年10月讥脐,ECMAScript 4.0版草案發(fā)布遭居,對3.0版做了大幅升級啼器,預(yù)計次年8月發(fā)布正式版本。草案發(fā)布后俱萍,由于4.0版的目標過于激進端壳,各方對于是否通過這個標準,發(fā)生了嚴重分歧枪蘑。以 Yahoo损谦、Microsoft、Google 為首的大公司岳颇,反對 JavaScript 的大幅升級照捡,主張小幅改動;以 JavaScript 創(chuàng)造者 Brendan Eich 為首的 Mozilla 公司话侧,則堅持當前的草案栗精。

2008年7月,由于對于下一個版本應(yīng)該包括哪些功能瞻鹏,各方分歧太大悲立,爭論過于激進,ECMA 開會決定新博,中止 ECMAScript 4.0 的開發(fā)(即廢除了這個版本)薪夕,將其中涉及現(xiàn)有功能改善的一小部分,發(fā)布為 ECMAScript 3.1赫悄,而將其他激進的設(shè)想擴大范圍原献,放入以后的版本,由于會議的氣氛涩蜘,該版本的項目代號起名為 Harmony(和諧)嚼贡。會后不久熏纯,ECMAScript 3.1 就改名為 ECMAScript 5同诫。

2009年12月,ECMAScript 5.0版 正式發(fā)布樟澜。Harmony 項目則一分為二误窖,一些較為可行的設(shè)想定名為 JavaScript.next 繼續(xù)開發(fā),后來演變成 ECMAScript 6秩贰;一些不是很成熟的設(shè)想霹俺,則被視為 JavaScript.next.next,在更遠的將來再考慮推出毒费。TC39 的總體考慮是丙唧,ECMAScript 5 與 ECMAScript 3 基本保持兼容,較大的語法修正和新功能加入觅玻,將由 JavaScript.next 完成想际。當時培漏,JavaScript.next 指的是ECMAScript 6。第六版發(fā)布以后胡本,將指 ECMAScript 7牌柄。TC39 預(yù)計,ECMAScript 5 會在2013年的年中成為 JavaScript 開發(fā)的主流標準侧甫,并在此后五年中一直保持這個位置珊佣。

2011年6月,ECMAScript 5.1版發(fā)布披粟,并且成為 ISO 國際標準(ISO/IEC 16262:2011)咒锻。到了2012年底,所有主要瀏覽器都支持 ECMAScript 5.1版的全部功能守屉。

2013年3月虫碉,ECMAScript 6 草案凍結(jié),不再添加新功能胸梆。新的功能設(shè)想將被放到 ECMAScript 7敦捧。

2013年12月,ECMAScript 6 草案發(fā)布碰镜。然后是12個月的討論期兢卵,聽取各方反饋。

2015年6月绪颖,ECMAScript 6 正式發(fā)布秽荤,并且更名為“ECMAScript 2015”。這是因為 TC39 委員會計劃柠横,以后每年發(fā)布一個 ECMAScript 的版本窃款,下一個版本在2016年發(fā)布,稱為“ECMAScript 2016”牍氛,2017年發(fā)布“ECMAScript 2017”晨继,以此類推。

來源:網(wǎng)道(WangDoc.com)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搬俊,一起剝皮案震驚了整個濱河市紊扬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌唉擂,老刑警劉巖餐屎,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異玩祟,居然都是意外死亡腹缩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來藏鹊,“玉大人胜臊,你說我怎么就攤上這事』锱校” “怎么了象对?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宴抚。 經(jīng)常有香客問我勒魔,道長,這世上最難降的妖魔是什么菇曲? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任冠绢,我火速辦了婚禮,結(jié)果婚禮上常潮,老公的妹妹穿的比我還像新娘弟胀。我一直安慰自己,他們只是感情好喊式,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布孵户。 她就那樣靜靜地躺著,像睡著了一般岔留。 火紅的嫁衣襯著肌膚如雪夏哭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天献联,我揣著相機與錄音竖配,去河邊找鬼。 笑死里逆,一個胖子當著我的面吹牛进胯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播原押,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼胁镐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了班眯?” 一聲冷哼從身側(cè)響起希停,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤烁巫,失蹤者是張志新(化名)和其女友劉穎署隘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亚隙,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡磁餐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诊霹。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡羞延,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脾还,到底是詐尸還是另有隱情伴箩,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布鄙漏,位于F島的核電站嗤谚,受9級特大地震影響哥放,放射性物質(zhì)發(fā)生泄漏达传。R本人自食惡果不足惜贸毕,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一年枕、第九天 我趴在偏房一處隱蔽的房頂上張望附鸽。 院中可真熱鬧筷厘,春花似錦氮发、人聲如沸榜旦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杖狼,卻和暖如春瘫怜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背本刽。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工鲸湃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人子寓。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓暗挑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親斜友。 傳聞我的和親對象是個殘疾皇子炸裆,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容

  • JavaScript 語言的歷史 誕生 JavaScript 因為互聯(lián)網(wǎng)而生,緊跟著瀏覽器的出現(xiàn)而問世鲜屏∨肟矗回顧它的歷...
    hnscdg閱讀 482評論 0 0
  • title: JavaScript的歷史layout: pagecategory: introductiondat...
    ichengzi閱讀 4,445評論 0 23
  • JS 簡史 Web 的興起已經(jīng)把 JavaScript 帶到一個前所未有的地步, 了解JS 的歷史更好的使用JS ...
    迷緣火葉閱讀 1,618評論 0 1
  • 一、什么是JavaScript洛史? JavaScript 是一種輕量級的腳本語言惯殊。所謂“腳本語言”,指的是它不具備開...
    壽木閱讀 4,310評論 0 1
  • 網(wǎng)頁是什么 網(wǎng)頁 = Html+CSS+JavaScript Html: 網(wǎng)頁元素內(nèi)容 CSS: 控制網(wǎng)頁樣式 J...
    e81bcd463937閱讀 890評論 0 6