ECMAScript進(jìn)化史(1):?話說Web腳本語言王者JavaScript的加冕歷史

互聯(lián)網(wǎng)起火-Web時代的來臨

在行文之前,反手就安利一下《瀏覽器史話中chrome霸主地位的奠定與國產(chǎn)瀏覽器的割據(jù)混戰(zhàn)》悴晰。

瀏覽器始祖NCSAMosaic在1993年1月發(fā)布(于1992年末由國家超級計算機(jī)應(yīng)用中心—National Center for Supercomputing Applications開發(fā))捌木。Mosaic可以同時展示文字和圖片金赦,從此瀏覽器變得有趣多了喂分。?在當(dāng)時人氣爆發(fā)的大受歡迎肴掷。Mosaic的出現(xiàn)碌廓,算是點(diǎn)燃了后期互聯(lián)網(wǎng)熱潮的火種之一传轰。NCSA將Mosaic的商業(yè)運(yùn)營權(quán)轉(zhuǎn)售給了Spyglass公司,該公司又向包括微軟公司在內(nèi)的多家公司技術(shù)授權(quán)谷婆,允許其在 Mosaic的基礎(chǔ)上開發(fā)自己的產(chǎn)品

MOSAIC開發(fā)的中心人物馬克·安德森吉姆·克拉克(幾何圖形發(fā)生器發(fā)明人慨蛙、SGI與Healtheon公司的創(chuàng)始人)設(shè)立了「MOSAIC Communication Corp.」辽聊,這家公司之后1994年11月改名為「Netscape Communication Corp.」,中譯為網(wǎng)景期贫。網(wǎng)景通信聘用了許多原有的Mosaic瀏覽器工程師跟匆,但是沒有采用Mosaic網(wǎng)頁瀏覽器的任何代碼。

1994年10月13日通砍,網(wǎng)景通信公司推出發(fā)布了Mosaic Netscape 0.9(網(wǎng)景導(dǎo)航者玛臂、網(wǎng)景瀏覽器),年底推出Netscape1.0封孙,自稱“Mozilla/1.0(Win3.1)迹冤。據(jù)說Mozilla = Mosaic + Killer,意為Mosaic殺手敛瓷,也有說法是 Mozilla = Mosaic & Godzilla叁巨,意為馬賽克和哥斯拉,而Mozilla最初的吉祥物是只綠色大蜥蜴呐籽。Netscape Navigator 取得了巨大成功锋勺,在發(fā)布的 4 個月里占據(jù)了 75% 的瀏覽器市場,短期內(nèi)成為了默認(rèn)瀏覽器狡蝶。

瀏覽器其實(shí)階段庶橱,不具備與訪問者互動的能力。......網(wǎng)景公司急需一種網(wǎng)頁腳本語言贪惹,使得瀏覽器可以與網(wǎng)頁互動苏章。起初它的主要目的是處理以前由服務(wù)器端負(fù)責(zé)的一些表單驗(yàn)證。在那個絕大多數(shù)用戶都在使用調(diào)制解調(diào)器上網(wǎng)的時代奏瞬,用戶填寫完一個表單點(diǎn)擊提交枫绅,需要等待幾十秒,完了服務(wù)器反饋給你說某個地方填錯了......在當(dāng)時如果能在客戶端完成一些基本的驗(yàn)證絕對是令人興奮的硼端。當(dāng)時走在技術(shù)革新最前沿的Netscape(網(wǎng)景)公司并淋,決定著手開發(fā)一種客戶端腳本語言,用來處理這種裝簡單的驗(yàn)證珍昨。

網(wǎng)頁腳本語言到底是什么語言县耽?

網(wǎng)景公司當(dāng)時有兩個選擇:一個是采用現(xiàn)有的語言,比如Perl镣典、Python兔毙、Tcl、Scheme等等兄春,允許它們直接嵌入網(wǎng)頁澎剥;另一個是發(fā)明一種全新的語言。

這兩個選擇各有利弊赶舆。第一個選擇肴裙,有利于充分利用現(xiàn)有代碼和程序員資源趾唱,推廣起來比較容易;第二個選擇蜻懦,有利于開發(fā)出完全適用的語言,實(shí)現(xiàn)起來比較容易夕晓。

到底采用哪一個選擇宛乃,網(wǎng)景公司內(nèi)部爭執(zhí)不下,管理層一時難以下定決心蒸辆。

JavaScript的誕生

就在這時征炼,發(fā)生了另外一件大事:1995年Sun公司將Oak語言改名為Java,正式向市場推出(次年躬贡,LiveScript改名為JavaScript)谆奥。

Sun公司大肆宣傳,許諾這種語言可以"一次編寫拂玻,到處運(yùn)行"(Write Once, Run Anywhere)酸些,它看上去很可能成為未來的主宰。

網(wǎng)景公司動了心檐蚜,決定與Sun公司結(jié)成聯(lián)盟魄懂。它不僅允許Java程序以applet(小程序)的形式,直接在瀏覽器中運(yùn)行闯第;甚至還考慮直接將Java作為腳本語言嵌入網(wǎng)頁市栗,只是因?yàn)檫@樣會使HTML網(wǎng)頁過于復(fù)雜,后來才不得不放棄咳短√蠲保總之,當(dāng)時的形勢就是咙好,網(wǎng)景公司的整個管理層篡腌,都是Java語言的信徒,Sun公司完全介入網(wǎng)頁腳本語言的決策敷扫。

1995年4月哀蘑,網(wǎng)景公司錄用34歲Brendan Eich(?JavaScript 之父 閃亮登場)。

Brendan Eich的主要方向和興趣是函數(shù)式編程葵第,網(wǎng)景公司招聘他的目的绘迁,是研究將Scheme語言作為網(wǎng)頁腳本語言的可能性。Brendan Eich本人也是這樣想的卒密,以為進(jìn)入新公司后缀台,會主要與Scheme語言打交道。

僅僅一個月之后哮奇,1995年5月膛腐,網(wǎng)景公司做出決策睛约,未來的網(wǎng)頁腳本語言必須"看上去與Java足夠相似",但是比Java簡單哲身,使得非專業(yè)的網(wǎng)頁作者也能很快上手辩涝。這個決策實(shí)際上將Perl、Python勘天、Tcl怔揩、Scheme等非面向?qū)ο缶幊痰恼Z言都排除在外了。

Brendan Eich被指定為這種"簡化版Java語言"的設(shè)計師脯丝。但是商膊,他對Java一點(diǎn)興趣也沒有。為了完成(應(yīng)付)公司安排的任務(wù)宠进,他只用10天時間就把JavaScript設(shè)計出來了晕拆。雖然語言的設(shè)計者水平非常NB,但誰也架不住“時間緊材蹬,任務(wù)重”实幕。由于設(shè)計時間太短,語言的一些細(xì)節(jié)考慮得不夠嚴(yán)謹(jǐn)赚导,導(dǎo)致后來很長一段時間茬缩,Javascript寫出來的程序混亂不堪。如果不是公司的決策吼旧,Brendan Eich絕不可能把Java作為Javascript設(shè)計的原型凰锡。作為設(shè)計者,他一點(diǎn)也不喜歡自己的這個作品:

"與其說我愛Javascript圈暗,不如說我恨它掂为。它是C語言和Self語言一夜情的產(chǎn)物。十八世紀(jì)英國文學(xué)家約翰遜博士說得好:'它的優(yōu)秀之處并非原創(chuàng)员串,它的原創(chuàng)之處并不優(yōu)秀勇哗。'(the part that is good is not original, and the part that is original is not good.)"

在其自敘中

1995年4月,在SiliconGraphics工作了七年寸齐,又在MicroUnity System Enineering工作三年之后欲诺,我來到了現(xiàn)在的Netscape公司。Netscape公司一年前就開始找人開發(fā)一種腳本語言渺鹦,希望能夠運(yùn)用到瀏覽器的網(wǎng)頁里扰法,讓我網(wǎng)能夠動起來。Java從First Person到Sun也經(jīng)過了五個春秋毅厚,1994年是還為了能夠應(yīng)用到Web上而重構(gòu)過塞颁。Netscape第一個獲得了Java的認(rèn)證,因此一個問題出現(xiàn)了:我們直接使用Java,還是令搞一個語言祠锣?

有的人極力主張使用Java酷窥,Java很好,很適合程序員寫組件伴网。但是還有更多的人只是寫點(diǎn)腳本蓬推,或者直接把別人的腳本拷過來改一改就行。這些人不是專業(yè)的程序員澡腾,大部分時間都用來干別的事情拳氢,而不是敲代碼。比如說網(wǎng)管蛋铆,或者一些只寫腳本的業(yè)余人員。如果他們想寫點(diǎn)代碼放接,他們只希望隨便敲打兩下鍵盤就行刺啦。最后,我們決定開發(fā)一門新語言纠脾,必須長得像Java玛瘸,并且是腳本語言。

與其他所有語言一樣苟蹈,它也是從其他語言借鑒了很多東西糊渊。與1995年9月,它第一次跟隨Navegator2.0 beta版一起發(fā)布慧脱,當(dāng)時取名為LiveScript渺绒。緊接著,12月4號菱鸥,公司與Sun公司一起宣布合作時更名為了JavaScript宗兼。

JavaScript吸引到了大量的開發(fā)者,因?yàn)槿怂臇|西僅僅是從HTML中邁出一步氮采,使用一點(diǎn)代碼是網(wǎng)頁動起來——使東西移動殷绍,對用戶的輸入做出反應(yīng),或者改變顏色鹊漠;彈出一個窗口主到;或者彈出一個對話框問個問題,只有回答了才能繼續(xù)——這些事情HTML干不了躯概,你需要編程語言登钥,但是要足夠簡單,不需像Java或者C++這樣復(fù)雜楞陷。

內(nèi)容建設(shè)不需要太高深怔鳖。這不是什么只有專家或者牛逼哄哄的計算機(jī)科學(xué)家才能研究的深奧問題。這樣有助于在內(nèi)容創(chuàng)建和分享過程中節(jié)約成本有經(jīng)濟(jì)優(yōu)勢,结执。就如Netscape在網(wǎng)絡(luò)建設(shè)中所做的一樣度陆。

1995推出的Javascript語言實(shí)際上是兩種語言風(fēng)格的雜種——(簡化的)函數(shù)式編程+(簡化的)面向?qū)ο缶幊?/b>,這是由Brendan Eich(函數(shù)式編程)與網(wǎng)景公司(面向?qū)ο缶幊蹋┕餐瑳Q定的献幔。

總的來說懂傀,Brendan Eich的設(shè)計思路是這樣的:

借鑒C語言的基本語法;

借鑒Java語言的數(shù)據(jù)類型和內(nèi)存管理蜡感;

借鑒Scheme語言蹬蚁,將函數(shù)提升到"第一等公民"(first class)的地位;

借鑒Self語言郑兴,使用基于原型(prototype)的繼承機(jī)制犀斋。

作為曾經(jīng)的java工程師,曾經(jīng)也被單片機(jī)虐過千萬遍情连,但是叽粹,最討厭的還是JS。比如寫《圖說js中的this——深入理解javascript中this指針

在面向?qū)ο缶幊汤镉袃蓚€重要的概念:一個是類却舀,一個是實(shí)例化的對象虫几,類是一個抽象的概念,用個形象的比喻表述的話挽拔,類就像一個模具辆脸,而實(shí)例化對象就是通過這個模具制造出來的產(chǎn)品,實(shí)例化對象才是我們需要的實(shí)實(shí)在在的東西螃诅,類和實(shí)例化對象有著很密切的關(guān)系啡氢,但是在使用上類的功能是絕對不能取代實(shí)例化對象,就像模具和模具制造的產(chǎn)品的關(guān)系州刽,二者的用途是不相同的空执。

其實(shí)javascript里的this指針邏輯上的概念也是實(shí)例化對象,這一點(diǎn)和java語言里的this指針是一致的穗椅,但是javascript里的this指針卻比java里的this難以理解的多辨绊,究其根本原因我個人覺得有三個原因:

原因一:javascript是一個函數(shù)編程語言,怪就怪在它也有this指針匹表,說明這個函數(shù)編程語言也是面向?qū)ο蟮恼Z言门坷,說的具體點(diǎn),javascript里的函數(shù)是一個高階函數(shù)袍镀,編程語言里的高階函數(shù)是可以作為對象傳遞的默蚌,同時javascript里的函數(shù)還有可以作為構(gòu)造函數(shù),這個構(gòu)造函數(shù)可以創(chuàng)建實(shí)例化對象苇羡,結(jié)果導(dǎo)致方法執(zhí)行時候this指針的指向會不斷發(fā)生變化绸吸,很難控制。

原因二:javascript里的全局作用域?qū)his指針有很大的影響,由上面java的例子我們看到锦茁,this指針只有在使用new操作符后才會生效攘轩,但是javascript里的this在沒有進(jìn)行new操作也會生效,這時候this往往會指向全局對象window码俩。

原因三:javascript里call和apply操作符可以隨意改變this指向度帮,這看起來很靈活,但是這種不合常理的做法破壞了我們理解this指針的本意稿存,同時也讓寫代碼時候很難理解this的真正指向

JavaScript的興起

1995年Netscape Navigator 2上首先實(shí)現(xiàn)了該語言的JavaScript 1.0版笨篷,主要應(yīng)用于客戶端Web應(yīng)用程序開發(fā),由于及時推出了相關(guān)標(biāo)準(zhǔn)瓣履,以及語言本身使用簡單率翅,實(shí)現(xiàn)功能強(qiáng)大的優(yōu)點(diǎn),受到Web應(yīng)有程序開發(fā)者的追捧袖迎。

為網(wǎng)頁腳本語言王者正名

JavaScript最初叫 Mocha安聘, 接著改名為 LiveScript。

1996年的時候Java炙手可熱瓢棒,Netscape為了搭上媒體熱炒Java的順風(fēng)車,于是某產(chǎn)品經(jīng)理丘喻,命令更名脯宿。為了“Javascript”像Java,最后才確定命名為 JavaScript泉粉。這讓很多人誤認(rèn)為JavaScript是Java的低級版连霉,其實(shí)并不是雷鋒和雷峰塔的關(guān)系這么簡單。根據(jù)歷史記錄嗡靡,Java 的命名與 Netscape 和 Sun 之間的合作有關(guān)跺撼。Netscape與Sun公司成立了一個開發(fā)聯(lián)盟,Netsacpe的腳本語言可以叫JavaScript讨彼,作為交換條件歉井,Netscape 在他們備受歡迎的瀏覽器中創(chuàng)建了 Java 運(yùn)行環(huán)境。因此哈误,Javascript其實(shí)是網(wǎng)景和Sun兩家公司一起攜手推向市場的哩至,這種語言被命名為"Java+script"并非單純的網(wǎng)頁腳本語言揩油Java這么簡單,其實(shí)是你儂我儂的事情蜜自。要知道菩貌,LiveScript 和 Java 在客戶端腳本方面(如Java applet)存在敵對關(guān)系。

JavaScript演義之王者爭霸

Java Applet是用Java語言編寫的重荠,有特定用途的應(yīng)用程序箭阶,其直接嵌入到HTML頁面中,由支持Java的瀏覽器解釋執(zhí)行并發(fā)揮其特定功能,大大提高Web頁面的交互和動態(tài)執(zhí)行能力仇参,包含Applet應(yīng)用程序的頁面被稱為Java-powered頁嘹叫。

當(dāng)用戶訪問這樣的網(wǎng)頁時,如果客戶端瀏覽器支持Java冈敛,并沒有將瀏覽器對Java的支持選項設(shè)置為禁止待笑,則Applet被下載到用戶的計算機(jī)上執(zhí)行,并執(zhí)行速度不受網(wǎng)絡(luò)帶寬的限制抓谴,用戶可以更好地欣賞網(wǎng)頁上Applet產(chǎn)生的各種效果暮蹂。

ScriptEase是大概誕生于1992年,由Nombas 的公司開發(fā)了一種叫做 C 減減(C-minus-minus癌压,簡稱 Cmm)的嵌入式腳本語言改名而來(據(jù)說后面的部分(mm)聽起來過于消極仰泻,同時字母 C “令人害怕”)。

Cmm 背后的理念很簡單:一個足夠強(qiáng)大可以替代宏操作(macro)的腳本語言滩届,同時保持與 C (和 C ++)足夠的相似性集侯,以便開發(fā)人員能很快學(xué)會。這個腳本語言捆綁在一個叫做 CEnvi 的共享軟件中帜消,它首次向開發(fā)人員展示了這種語言的威力棠枉。

VBScript(Microsoft Visual Basic Scripting Edition)是程序開發(fā)語言Visual Basic家族的最新成員,它將靈活的腳本應(yīng)用于更廣泛的領(lǐng)域泡挺,包括Microsoft Internet Explorer中的Web客戶端腳本和Microsoft Internet Infomation Server中的Web服務(wù)器端腳本辈讶。VBScript也是Microsoft推出的產(chǎn)品,開始主要定位于客戶端腳本娄猫,由于動態(tài)頁面技術(shù)的快速發(fā)展贱除,VBScript走向服務(wù)器端,與ASP媳溺,IIS(Internet Infomation Server, Internet信息服務(wù))緊密結(jié)合月幌,有力促進(jìn)動態(tài)頁面技術(shù)的發(fā)展。

?Microsoft的JScript和VBScript腳本應(yīng)用在服務(wù)器端悬蔽,執(zhí)行相應(yīng)的管理權(quán)限扯躺,同時Microsoft提供其訪問系統(tǒng)組建的API,使之與系統(tǒng)緊密結(jié)合,如訪問本地數(shù)據(jù)庫蝎困,并將結(jié)果返回客戶端瀏覽器等缅帘。

或許因?yàn)橐驗(yàn)镴avaScript 1.0獲得了巨大的成功,網(wǎng)景一看瀏覽器業(yè)務(wù)蒸蒸日上难衰,野心大漲钦无,打起搞個操作系統(tǒng)的注意,微軟意識到網(wǎng)景通訊公司對其操作系統(tǒng)和應(yīng)用市場的威脅盖袭,立馬收購另外一家瀏覽器公司失暂,在其基礎(chǔ)上開發(fā)了Internet Explorer網(wǎng)景跟微軟的撕逼大戰(zhàn)不必多說彼宠,這中間就是多出了IE。

隨著電腦技術(shù)的突飛猛進(jìn)和互聯(lián)網(wǎng)的崛起弟塞,Internet瀏覽器技術(shù)方興未艾凭峡,而比爾?蓋茨認(rèn)為,決定未來計算機(jī)世界命運(yùn)的决记,仍是“視窗”技術(shù)而不會是瀏覽器技術(shù)摧冀。因此,他僅僅在新推出的Windows95中增加了一個網(wǎng)絡(luò)瀏覽功能系宫,而并沒有進(jìn)行瀏覽器技術(shù)開發(fā)的計劃索昂。

在隨后的兩年內(nèi),網(wǎng)景專注于瀏覽器技術(shù)的開發(fā)扩借。很快椒惨,伴隨著NC、JAVA等技術(shù)標(biāo)準(zhǔn)的提出潮罪,一種基于Internet而首次與微軟無關(guān)的新的軟硬件體系形成了康谆。以網(wǎng)景為首的一批互聯(lián)網(wǎng)技術(shù)公司應(yīng)聲崛起,迅速構(gòu)成了一股隱隱然可以與微軟分庭抗禮的新力量嫉到。一個顯而易見的事實(shí)正在生成:如果網(wǎng)景在瀏覽器市場上取得壟斷性優(yōu)勢沃暗,它就完全有可能和實(shí)力推出一套新的操作系統(tǒng)以替代微軟的Windows。

“微軟錯了何恶。未來的世界不是PC描睦,而是Internet〉级”比爾?蓋茨很快就意識到,他犯下了一個足以讓微軟走向毀滅的錯誤隔崎。

1997年今艺,微軟發(fā)布了性能穩(wěn)定的IE 4.0,并捆綁windows銷售爵卒,從此終結(jié)了Netscape 的王者之路

作為競爭對手的微軟在自家的IE3中加入了名為JScript(名稱不同是為了避免侵權(quán))的JavaScript實(shí)現(xiàn)虚缎,微軟用JScript1.0來搶占客戶端腳本市場。

而此時市面上意味著有3個不同的JavaScript版本(web腳本語言)钓株,IE的JScript实牡、網(wǎng)景的JavaScript和ScriptEase中的CEnvi。當(dāng)時還沒有標(biāo)準(zhǔn)規(guī)定JavaScript的語法和特性轴合。隨著版本不同暴露的問題日益加劇创坞,JavaScript的規(guī)范化最終被提上日程。

JavaScript的規(guī)范化

1997年受葛,以JavaScript1.1為藍(lán)本的建議被提交給了歐洲計算機(jī)制造商協(xié)會(ECMA题涨,European Computer Manufactures Association)該協(xié)會指定39號技術(shù)委員會負(fù)責(zé)將其進(jìn)行標(biāo)準(zhǔn)化偎谁,TC39來此各大公司以及其他關(guān)注腳本語言發(fā)展的公司的程序員組成,經(jīng)過數(shù)月的努力完成了ECMA-262——定義了一種名為ECMAScript的新腳本語言的標(biāo)準(zhǔn)纲堵。第二年巡雨,ISO/IEC(國標(biāo)標(biāo)準(zhǔn)化組織和國際電工委員會)也采用了ECMAScript作為標(biāo)準(zhǔn)(即ISO/IEC-16262)。

ECMAScript

由ECMA-262定義的ECMAScript其實(shí)與Web瀏覽器沒有依賴關(guān)系席函。Web瀏覽器只是ECMAScript實(shí)現(xiàn)可能的宿主環(huán)境之一铐望。ECMA-262定義的只這門語言的基礎(chǔ),而在此基礎(chǔ)上可能構(gòu)建更完善的腳本語言茂附。說回宿主正蛙,它不僅提供基本的JavaScript的實(shí)現(xiàn),同時也會提供該語言的擴(kuò)展何之,比如DOM跟畅。比如JavaScript實(shí)現(xiàn):

雖然JavaScript和ECMAScript通常被人用來表達(dá)相同的意思,但JavaScript的含義去比ECMA-262中規(guī)定的多得多溶推。一個完整的JavaScript實(shí)現(xiàn)應(yīng)由三個部分組成:

核心(ECMAScript)

文檔對象模型(DOM)

瀏覽器對象模型(BOM)

ECMAScript其他宿主環(huán)境還包括Node和Adobe Flash徊件。

ECMA-262標(biāo)準(zhǔn)主要規(guī)定了這門語言的以下組成部分:1.語法,2.類型蒜危,3.語句虱痕,4.關(guān)鍵字,5.保留字辐赞,6.操作符部翘,7.對象。

ECMAScript發(fā)展標(biāo)準(zhǔn)

TC39(Technical Committee 39)是一個推動JavaScript發(fā)展的委員會响委,它的成語來自各個主流瀏覽器的代表成語新思。會議實(shí)行多數(shù)決,每一項決策只有大部分人同意且沒有強(qiáng)烈反對才能去實(shí)現(xiàn)赘风。

TC39成員制定著ECMAScript的未來夹囚。

每一項新特性最終要進(jìn)入到ECMAScript規(guī)范里,需要經(jīng)歷5個階段邀窃,這5個階段如下:

Stage 0: Strawperson

只要是TC39成員或者貢獻(xiàn)者荸哟,都可以提交想法

Stage 1: Proposal

這個階段確定一個正式的提案

Stage 2: draft

規(guī)范的第一個版本,進(jìn)入此階段的提案大概率會成為標(biāo)準(zhǔn)

Stage 3: Candidate

進(jìn)一步完善提案細(xì)則

Stage 4: Finished

表示已準(zhǔn)備好將其添加到正式的ECMAScript標(biāo)準(zhǔn)中

ECMAScript歷史版本

至發(fā)稿日為止有九個ECMA-262版本發(fā)表瞬捕。其歷史版本如下:

1997年6月:第一版

1998年6月:修改格式鞍历,使其與ISO/IEC16262國際標(biāo)準(zhǔn)一樣

1999年12月:強(qiáng)大的正則表達(dá)式,更好的詞法作用域鏈處理肪虎,新的控制指令劣砍,異常處理,錯誤定義更加明確扇救,數(shù)據(jù)輸出的格式化及其它改變

2009年12月:添加嚴(yán)格模式("use strict")秆剪。修改了前面版本模糊不清的概念赊淑。增加了getters,setters仅讽,JSON以及在對象屬性上更完整的反射陶缺。

2011年6月:ECMAScript標(biāo)5.1版形式上完全一致于國際標(biāo)準(zhǔn)ISO/IEC 16262:2011。

2015年6月:ECMAScript 2015(ES2015)洁灵,第 6 版饱岸,最早被稱作是 ECMAScript 6(ES6),添加了類和模塊的語法徽千,其他特性包括迭代器苫费,Python風(fēng)格的生成器和生成器表達(dá)式,箭頭函數(shù)双抽,二進(jìn)制數(shù)據(jù)百框,靜態(tài)類型數(shù)組,集合(maps牍汹,sets 和 weak maps)铐维,promise,reflection 和 proxies慎菲。作為最早的 ECMAScript Harmony 版本嫁蛇,也被叫做ES6 Harmony。

2016年6月:ECMAScript 2016(ES2016)露该,第 7 版睬棚,多個新的概念和語言特性。

2017年6月:ECMAScript 2017(ES2017)解幼,第 8 版抑党,多個新的概念和語言特性。

2018年6月:ECMAScript 2018 (ES2018)撵摆,第 9 版底靠,包含了異步循環(huán),生成器台汇,新的正則表達(dá)式特性和 rest/spread 語法。

2019年6月:ECMAScript 2019 (ES2019)篱瞎,第 10 版苟呐。

參考資料

ECMAScript 6 入門

1.5萬字概括ES6全部特性

MDN

ES2018 新特征之:非轉(zhuǎn)義序列的模板字符串

正則表達(dá)式反向(lookbehind)斷言

Unicode property escapes

exnext提案

ES7、ES8俐筋、ES9牵素、ES10新特性大盤點(diǎn)

Ecma TC39

[ECMAScript] TC39 process

The TC39 Process

互聯(lián)網(wǎng)的締造者們:Brendan?Eich與JavaScript?

JavaScript 的歷史

瀏覽器史話中chrome霸主地位的奠定與國產(chǎn)瀏覽器的割據(jù)混戰(zhàn)

閑談一下,ES3澄者、ES4笆呆、ES5请琳、ES6 分別是什么

轉(zhuǎn)載本站文章《ECMAScript進(jìn)化史(1):?話說Web腳本語言王者JavaScript的加冕歷史》,

請注明出處:https://www.zhoulujun.cn/html/webfront/ECMAScript/js6/2015_0720_141.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赠幕,隨后出現(xiàn)的幾起案子俄精,更是在濱河造成了極大的恐慌,老刑警劉巖榕堰,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竖慧,死亡現(xiàn)場離奇詭異,居然都是意外死亡逆屡,警方通過查閱死者的電腦和手機(jī)圾旨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魏蔗,“玉大人砍的,你說我怎么就攤上這事≥褐危” “怎么了廓鞠?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長产雹。 經(jīng)常有香客問我诫惭,道長,這世上最難降的妖魔是什么蔓挖? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任夕土,我火速辦了婚禮,結(jié)果婚禮上瘟判,老公的妹妹穿的比我還像新娘怨绣。我一直安慰自己,他們只是感情好拷获,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布篮撑。 她就那樣靜靜地躺著,像睡著了一般匆瓜。 火紅的嫁衣襯著肌膚如雪赢笨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼谣膳。 笑死燕鸽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼食铐,長吁一口氣:“原來是場噩夢啊……” “哼梅忌!你這毒婦竟也來了狰腌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤牧氮,失蹤者是張志新(化名)和其女友劉穎琼腔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹋笼,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡展姐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了剖毯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片圾笨。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖逊谋,靈堂內(nèi)的尸體忽然破棺而出擂达,到底是詐尸還是另有隱情,我是刑警寧澤胶滋,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布板鬓,位于F島的核電站,受9級特大地震影響究恤,放射性物質(zhì)發(fā)生泄漏俭令。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一部宿、第九天 我趴在偏房一處隱蔽的房頂上張望抄腔。 院中可真熱鬧,春花似錦理张、人聲如沸赫蛇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悟耘。三九已至,卻和暖如春织狐,著一層夾襖步出監(jiān)牢的瞬間暂幼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工移迫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旺嬉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓起意,卻偏偏與公主長得像鹰服,于是被迫代替她去往敵國和親病瞳。 傳聞我的和親對象是個殘疾皇子揽咕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

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

  • JS 簡史 Web 的興起已經(jīng)把 JavaScript 帶到一個前所未有的地步, 了解JS 的歷史更好的使用JS ...
    迷緣火葉閱讀 1,618評論 0 1
  • title: JavaScript的歷史layout: pagecategory: introductiondat...
    ichengzi閱讀 4,445評論 0 23
  • 文/何其甚 學(xué)習(xí)一門語言悲酷,充分了解其發(fā)展歷史,會有助于更好地理解這門語言亲善。知道其發(fā)展歷史设易,你會明白它為什么是這個樣...
    何其甚閱讀 1,403評論 0 1
  • 一、誕生 JavaScript 因?yàn)榛ヂ?lián)網(wǎng)而生蛹头,緊跟著瀏覽器的出現(xiàn)而問世顿肺。回顧它的歷史渣蜗,就要從瀏覽器的歷史講起屠尊。 ...
    饑人谷_檐語閱讀 4,038評論 0 3
  • 一、什么是JavaScript耕拷? JavaScript 是一種輕量級的腳本語言讼昆。所謂“腳本語言”,指的是它不具備開...
    壽木閱讀 4,310評論 0 1