<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                <h2 id="1.1">1.1 導論</h2> ### 內容簡介 本教程全面介紹JavaScript核心語法(ECMAScript 5.1版本),從最簡單的開始講起,循序漸進、由淺入深,力求清晰易懂。所有章節都帶有大量的代碼實例,便于理解和模仿,可以用到實際項目中,即學即用。 更新的ES6/ES7語法請參考我寫的[《ECMAScript 6入門》](http://es6.ruanyifeng.com/)。 ### JavaScript是什么? JavaScript是一種輕量級的腳本語言,可以部署在多種環境,最常見的部署環境就是瀏覽器。所謂“腳本語言”,指的是它不具備開發操作系統的能力,而是只用來編寫控制其他大型應用程序的“腳本”。 本質上,JavaScript語言是一種“對象模型”。各種部署環境通過這個模型,描述自己的功能和操作接口,從而通過JavaScript控制這些功能。 JavaScript的核心部分相當精簡,只包括兩個部分:基本的語法構造(比如操作符、控制結構、語句)和標準庫(就是一系列具有各種功能的對象比如`Array`、`Date`、`Math`等)。 除此之外,各種部署環境提供額外的API(即只能在某個環境使用的接口),以便JavaScript調用。如果部署環境是瀏覽器,提供的額外API可以分成三大類。 - 瀏覽器控制類:操作瀏覽器 - DOM類:操作網頁的各種元素 - Web類:實現互聯網的各種功能 如果部署環境是服務器,則會提供各種操作系統的API,比如文件操作API、網絡通信API等等,現在最流行的JavaScript服務器環境是Node。 本教程主要介紹JavaScript語言和網頁開發的基本知識,可以分成以下五大部分。 - 基本語法 - 標準庫 - 瀏覽器API - DOM - Web API 服務器環境的編程,將有單獨的Node教程。 ### 為什么學習JavaScript? JavaScript語言有一些顯著特點,使得它非常值得學習。它既適合當作學習編程的入門語言,也適合當作日常開發的工作語言。它是目前最有希望、前途最光明的計算機語言之一。 #### 操控瀏覽器的能力 JavaScript的發明目的,就是作為瀏覽器的內置腳本語言,為網頁開發者提供操控瀏覽器的能力。它是目前唯一一種通用的瀏覽器腳本語言,所有瀏覽器都支持。它可以讓網頁呈現各種特殊效果,為用戶提供良好的互動體驗。 目前,全世界幾乎所有網頁都使用JavaScript。如果不用,網站的易用性和使用效率將大打折扣,無法成為操作便利、對用戶友好的網站。 對于一個互聯網開發者來說,如果你想提供漂亮的網頁、令用戶滿意的上網體驗、各種基于瀏覽器的便捷功能、前后端之間緊密高效的聯系,JavaScript是必不可少的工具。 #### 廣泛的使用領域 近年來,JavaScript的使用范圍,慢慢超越了瀏覽器,正在向通用的系統語言發展。 **(1)瀏覽器的平臺化** 隨著HTML 5的出現,瀏覽器本身的功能越來越強,不再僅僅能瀏覽網頁,而是越來越像一個平臺,JavaScript因此得以調用許多系統功能,比如操作本地文件、操作圖片、調用攝像頭和麥克風等等。這使得JavaScript可以完成許多以前無法想象的事情。 **(2)Node** Node項目使得JavaScript可以用于開發服務器端的大型項目,網站的前后端都用JavaScript開發已經成為了現實。有些嵌入式平臺(Raspberry Pi)能夠安裝Node.js,于是JavaScript就能為這些平臺開發應用程序。 **(3)數據庫操作** JavaScript甚至也可以用來操作數據庫。NoSQL數據庫這個概念,本身就是在JSON(JavaScript Object Notation,JavaScript對象表示法)格式的基礎上誕生的,大部分NoSQL數據庫允許JavaScript直接操作。基于SQL語言的開源數據庫PostgreSQL支持JavaScript作為操作語言,可以部分取代SQL查詢語言。 **(4)跨移動平臺** JavaScript也正在成為手機應用的開發語言。一般來說,安卓平臺使用Java語言開發,iOS平臺使用Objective-C或Swift語言開發。許多人正在努力,讓JavaScript成為各個平臺的通用開發語言。 PhoneGap項目就是將JavaScript和HTML5打包在一個容器之中,使得它能同時在iOS和安卓上運行。Facebook的React Native項目則是將JavaScript寫的組件,編譯成原生組件,從而使它們具備優秀的性能。 Mozilla基金會的手機操作系統Firefox OS,更是直接將JavaScript作為操作系統的平臺語言。 **(5)內嵌腳本語言** 越來越多的應用程序,將JavaScript作為內嵌的腳本語言,比如Adobe公司的著名PDF閱讀器Acrobat、Linux桌面環境GNOME 3。 **(6)跨平臺的桌面應用程序** Chromium OS、Windows 8等操作系統直接支持JavaScript編寫應用程序。Mozilla的Open Web Apps項目、Google的[Chrome App項目](http://developer.chrome.com/apps/about_apps)、Github的[Electron項目](http://electron.atom.io/)、以及[TideSDK項目](http://www.tidesdk.org/),都可以用來編寫運行于Windows、Mac OS和Android等多個桌面平臺的程序,不依賴瀏覽器。 **(7)小結** 可以預期,JavaScript最終將能讓你只用一種語言,就開發出適應不同平臺(包括桌面端、服務器端、手機端)的程序。根據2013年9月的[統計](http://adambard.com/blog/top-github-languages-for-2013-so-far/),JavaScript是本年度代碼托管網站Github上使用量排名第一的語言。 著名程序員Jeff Atwood甚至提出了一條[“Atwood定律”](http://www.codinghorror.com/blog/2007/07/the-principle-of-least-power.html): > “所有可以用JavaScript編寫的程序,最終都會出現JavaScript的版本。”(Any application that can be written in JavaScript will eventually be written in JavaScript.) #### 易學性 相比學習其他語言,學習JavaScript有一些有利條件。 **(1)學習環境無處不在** 只要有瀏覽器,就能運行JavaScript程序;只要有文本編輯器,就能編寫JavaScript程序。這意味著,幾乎所有電腦都原生提供JavaScript學習環境,不用另行安裝復雜的IDE(集成開發環境)和編譯器。 **(2)簡單性** 相比其他腳本語言(比如Python或Ruby),JavaScript的語法相對簡單一些,本身的語法特性并不是特別多。而且,那些語法中的復雜部分,也不是必需要學會。你完全可以只用簡單命令,完成大部分的操作。 **(3)與主流語言的相似性** JavaScript的語法很類似C/C++和Java,如果學過這些語言(事實上大多數學校都教),JavaScript的入門會非常容易。 必須說明的是,雖然核心語法不難,但是JavaScript的復雜性體現在另外兩個方面。 首先,它涉及大量的外部API。JavaScript要發揮作用,必須與其他組件配合,這些外部組件五花八門,數量極其龐大,幾乎涉及網絡應用的各個方面,掌握它們絕非易事。 其次,JavaScript語言有一些設計缺陷。某些地方相當不合理,另一些地方則會出現怪異的運行結果。學習JavaScript,很大一部分時間是用來搞清楚哪些地方有陷阱。Douglas Crockford寫過一本有名的書,名字就叫[《JavaScript: The Good Parts》](http://javascript.crockford.com/),言下之意就是這門語言不好的地方很多,必須寫一本書才能講清楚。另外一些程序員則感到,為了更合理地編寫JavaScript程序,就不能用JavaScript來寫,而必須發明新的語言,比如CoffeeScript、TypeScript、Dart這些新語言的發明目的,多多少少都有這個因素。 盡管如此,目前看來,JavaScript的地位還是無法動搖。加之,語言標準的快速進化,使得JavaScript功能日益增強,而語法缺陷和怪異之處得到了彌補。所以,JavaScript還是值得學習,況且它的入門真的不難。 #### 強大的性能 JavaScript的性能優勢體現在以下方面。 **(1)靈活的語法,表達力強。** JavaScript既支持類似C語言清晰的過程式編程,也支持靈活的函數式編程。可以用來寫并發處理(concurrent)。這些語法特性已經被證明非常強大,可以用于許多場合,尤其適用非同步編程。 JavaScript的所有值都是對象,這為程序員提供了靈活性和便利性。因為你可以很方便地、按照需要隨時創造數據結構,不用進行麻煩的預定義。 JavaScript的標準還在快速進化中,并不斷合理化,并添加更適用的語法特性。 **(2)支持編譯運行。** JavaScript語言本身,雖然是一種解釋型語言,但是在現代瀏覽器中,JavaScript都是編譯后運行。程序會被高度優化,運行效率接近二進制程序。而且,JavaScript引擎正在快速發展,性能將越來越好。 **(3)事件驅動和非阻塞式設計。** JavaScript程序可以采用事件驅動(event-driven)和非阻塞式(non-blocking)設計,在服務器端適合高并發環境,普通的硬件就可以承受很大的訪問量。 #### 開放性 JavaScript是一種開放的語言。它的標準ECMA-262是ISO國際標準,寫得非常詳盡明確;該標準的主要實現(比如V8和SpiderMonkey引擎)都是開放的,而且質量很高。這保證了這門語言不屬于任何公司或個人,不存在版權和專利的問題。 語言標準由TC39委員會負責制定,該委員會的運作是透明的,所有討論都是開放的,會議記錄都會對外公布。 不同公司的JavaScript運行環境,兼容性很好,程序不做調整或只做很小的調整,就能在所有瀏覽器上運行。 #### 社區支持和就業機會 全世界程序員都在使用JavaScript,它有著極大的社區、廣泛的文獻和圖書、豐富的代碼資源。絕大部分你需要用到的功能,都有多個開源函數庫可供選用。 作為項目負責人,你不難招聘到數量眾多的JavaScript程序員;作為開發者,你也不難找到一份JavaScript的工作。 ### 實驗環境 JavaScript的上手非常方便,只要電腦安裝了瀏覽器,就可以用來實驗了。只要打開Chrome瀏覽器的“開發者工具”(Developer Tools),就可以在它的“控制臺”(console)運行JavaScript代碼。 進入“控制臺”,有兩種方法。 - 快捷鍵。在Chrome瀏覽器中,直接按`Option + Command + J`(Mac)或者`Ctrl + Shift + J`(Windows/Linux)。 - 菜單。從“工具”(Tools)菜單中打開“開發者工具”,然后點擊Console選項卡。“開發者工具”的快捷鍵是F12,或者`Option + Command + I`(Mac)以及`Ctrl + Shift + I`(Windows/Linux)。 進入控制臺以后,就可以在提示符后輸入代碼,然后按`Enter`鍵,代碼就會執行。如果按`Shift + Enter`鍵,就是代碼換行,不會觸發執行。建議閱讀本教程時,將代碼復制到控制臺進行實驗。 將下面的程序復制到“控制臺”,按下回車后,就可以看到運行結果。 ```javascript function greetMe(yourName) { console.log('Hello ' + yourName); } greetMe('World') // Hello World ``` ### 自序 我想寫這本教程,主要原因是自己需要。 編程時,往往需要查閱資料,確定準確用法。理想的JavaScript參考書,應該簡明易懂,一目了然,告訴我有哪些注意點,提供代碼范例。涉及重要概念,還應該適當講解。可是大多數時候,現實都不是如此。找到的資料冗長難懂,抓不住重點,有時還很陳舊,跟不上語言標準和瀏覽器的快速發展,且大多數是英文資料。 學習過程中,我做了很多JavaScript筆記。多年累積,數量相當龐大。遇到問題,我首先查自己的筆記,如果筆記里沒有,再到網上查,最后回過頭把筆記補全。終于有一天,我意識到可以把筆記做成書,這就是這本教程的由來。 我是為自己寫這本書的,我想用自己的語言敘述JavaScript,按照自己的方式編排章節,便于將來的查閱。當然,另一個寫作動力是覺得這些內容對他人有用,畢竟我花了那么多時間,整理成書可以節省其他人的時間。 正因為脫胎于筆記,這本教程跟其他JavaScript書籍有所不同。 - 它有點像教程,包含重要概念的簡潔講解,努力把復雜的問題講得簡單,希望一兩分鐘內就能抓住重點。 - 它又有點像參考手冊,羅列主要用法和各種API接口,并給出可以立即運行的代碼。所有章節按主題編排,不完全按照由淺入深的學習順序編排,這是為了方便查閱。 - 它主要關注編程實戰遇到的問題,從語言本身到瀏覽器接口都涉及,容易出錯的一些細節尤其講得多。 <h2 id="1.2">1.2 JavaScript語言的歷史</h2> ### JavaScript的誕生 JavaScript因為互聯網而生,緊隨著瀏覽器的出現而問世。回顧它的歷史,就要從瀏覽器的歷史講起。 1990年底,歐洲核能研究組織(CERN)科學家Tim Berners-Lee,在全世界最大的電腦網絡——互聯網的基礎上,發明了萬維網(World Wide Web),從此可以在網上瀏覽網頁文件。最早的網頁只能在操作系統的終端里瀏覽,也就是說只能使用命令行操作,網頁都是在字符窗口中顯示,這當然非常不方便。 1992年底,美國國家超級電腦應用中心(NCSA)開始開發一個獨立的瀏覽器,叫做Mosaic。這是人類歷史上第一個瀏覽器,從此網頁可以在圖形界面的窗口瀏覽。 1994年10月,NCSA的一個主要程序員Marc Andreessen聯合風險投資家Jim Clark,成立了Mosaic通信公司(Mosaic Communications),不久后改名為Netscape。這家公司的方向,就是在Mosaic的基礎上,開發面向普通用戶的新一代的瀏覽器Netscape Navigator。 1994年12月,Navigator發布了1.0版,市場份額一舉超過90%。 Netscape公司很快發現,Navigator瀏覽器需要一種可以嵌入網頁的腳本語言,用來控制瀏覽器行為。當時,網速很慢而且上網費很貴,有些操作不宜在服務器端完成。比如,如果用戶忘記填寫“用戶名”,就點了“發送”按鈕,到服務器再發現這一點就有點太晚了,最好能在用戶發出數據之前,就告訴用戶“請填寫用戶名”。這就需要在網頁中嵌入小程序,讓瀏覽器檢查每一欄是否都填寫了。 管理層對這種瀏覽器腳本語言的設想是:功能不需要太強,語法較為簡單,容易學習和部署。那一年,正逢Sun公司的Java語言問世,市場推廣活動非常成功。Netscape公司決定與Sun公司合作,瀏覽器支持嵌入Java小程序(后來稱為Java applet)。但是,瀏覽器腳本語言是否就選用Java,則存在爭論。后來,還是決定不使用Java,因為網頁小程序不需要Java這么“重”的語法。但是,同時也決定腳本語言的語法要接近Java,并且可以支持Java程序。這些設想直接排除了使用現存語言,比如Perl、Python和TCL。 1995年,Netscape公司雇傭了程序員Brendan Eich開發這種網頁腳本語言。Brendan Eich有很強的函數式編程背景,希望以Scheme語言(函數式語言鼻祖LISP語言的一種方言)為藍本,實現這種新語言。 1995年5月,Brendan Eich只用了10天,就設計完成了這種語言的第一版。它是一個大雜燴,語法有多個來源: - 基本語法:借鑒C語言和Java語言。 - 數據結構:借鑒Java語言,包括將值分成原始值和對象兩大類。 - 函數的用法:借鑒Scheme語言和Awk語言,將函數當作第一等公民,并引入閉包。 - 原型繼承模型:借鑒Self語言(Smalltalk的一種變種)。 - 正則表達式:借鑒Perl語言。 - 字符串和數組處理:借鑒Python語言。 為了保持簡單,這種腳本語言缺少一些關鍵的功能,比如塊級作用域、模塊、子類型(subtyping)等等,但是可以利用現有功能找出解決辦法。這種功能的不足,直接導致了后來JavaScript的一個顯著特點:對于其他語言,你需要學習語言的各種功能,而對于JavaScript,你常常需要學習各種解決問題的模式。而且由于來源多樣,從一開始就注定,JavaScript的編程風格是函數式編程和面向對象編程的一種混合體。 Netscape公司的這種瀏覽器腳本語言,最初名字叫做Mocha,1995年9月改為LiveScript。12月,Netscape公司與Sun公司(Java語言的發明者和所有者)達成協議,后者允許將這種語言叫做JavaScript。這樣一來,Netscape公司可以借助Java語言的聲勢,而Sun公司則將自己的影響力擴展到了瀏覽器。 之所以起這個名字,并不是因為JavaScript本身與Java語言有多么深的關系(事實上,兩者關系并不深),而是因為Netscape公司已經決定,使用Java語言開發網絡應用程序,JavaScript可以像膠水一樣,將各個部分連接起來。當然,后來的歷史是Java語言的瀏覽器插件失敗了,JavaScript反而發揚光大。 1995年12月4日,Netscape公司與Sun公司聯合發布了JavaScript語言。 1996年3月,Navigator 2.0瀏覽器正式內置了JavaScript腳本語言。 ### JavaScript與ECMAScript的關系 1996年8月,微軟模仿JavaScript開發了一種相近的語言,取名為JScript(JavaScript是Netscape的注冊商標,微軟不能用),首先內置于IE 3.0。Netscape公司面臨喪失瀏覽器腳本語言的主導權的局面。 1996年11月,Netscape公司決定將JavaScript提交給國際標準化組織ECMA(European Computer Manufacturers Association),希望JavaScript能夠成為國際標準,以此抵抗微軟。ECMA的39號技術委員會(Technical Committee 39)負責制定和審核這個標準,成員由業內的大公司派出的工程師組成,目前共25個人。該委員會定期開會,所有的郵件討論和會議記錄,都是公開的。 1997年7月,ECMA組織發布262號標準文件(ECMA-262)的第一版,規定了瀏覽器腳本語言的標準,并將這種語言稱為ECMAScript。這個版本就是ECMAScript 1.0版。之所以不叫JavaScript,一方面是由于商標的關系,Java是Sun公司的商標,根據一份授權協議,只有Netscape公司可以合法地使用JavaScript這個名字,且JavaScript已經被Netscape公司注冊為商標,另一方面也是想體現這門語言的制定者是ECMA,不是Netscape,這樣有利于保證這門語言的開放性和中立性。因此,ECMAScript和JavaScript的關系是,前者是后者的規格,后者是前者的一種實現。在日常場合,這兩個詞是可以互換的。 ECMAScript只用來標準化JavaScript這種語言的基本語法結構,與部署環境相關的標準都由其他標準規定,比如DOM的標準就是由W3C組織(World Wide Web Consortium)制定的。 ECMA-262標準后來也被另一個國際標準化組織ISO(International Organization for Standardization)批準,標準號是ISO-16262。 ### JavaScript與Java的關系 JavaScript和Java是兩種不一樣的語言,但是它們之間存在聯系。 JavaScript的基本語法和對象體系,是模仿Java而設計的。但是,JavaScript沒有采用Java的靜態類型。正是因為JavaScript與Java有很大的相似性,所以這門語言才從一開始的LiveScript改名為JavaScript。基本上,JavaScript這個名字的原意是“很像Java的腳本語言”。 在JavaScript語言中,函數是一種獨立的數據類型,以及采用基于原型對象(prototype)的繼承鏈。這是它與Java語法最大的兩點區別。JavaScript語法要比Java自由得多。 另外,Java語言需要編譯,而JavaScript語言則是運行時由解釋器直接執行。 總之,JavaScript的原始設計目標是一種小型的、簡單的動態語言,與Java有足夠的相似性,使得使用者(尤其是Java程序員)可以快速上手。 ### JavaScript的版本 1997年7月,ECMAScript 1.0發布。 1998年6月,ECMAScript 2.0版發布。 1999年12月,ECMAScript 3.0版發布,成為JavaScript的通行標準,得到了廣泛支持。 2007年10月,ECMAScript 4.0版草案發布,對3.0版做了大幅升級,預計次年8月發布正式版本。草案發布后,由于4.0版的目標過于激進,各方對于是否通過這個標準,發生了嚴重分歧。以Yahoo、Microsoft、Google為首的大公司,反對JavaScript的大幅升級,主張小幅改動;以JavaScript創造者Brendan Eich為首的Mozilla公司,則堅持當前的草案。 2008年7月,由于對于下一個版本應該包括哪些功能,各方分歧太大,爭論過于激進,ECMA開會決定,中止ECMAScript 4.0的開發(即廢除了這個版本),將其中涉及現有功能改善的一小部分,發布為ECMAScript 3.1,而將其他激進的設想擴大范圍,放入以后的版本,由于會議的氣氛,該版本的項目代號起名為Harmony(和諧)。會后不久,ECMAScript 3.1就改名為ECMAScript 5。 2009年12月,ECMAScript 5.0版正式發布。Harmony項目則一分為二,一些較為可行的設想定名為JavaScript.next繼續開發,后來演變成ECMAScript 6;一些不是很成熟的設想,則被視為JavaScript.next.next,在更遠的將來再考慮推出。TC39的總體考慮是,ECMAScript 5與ECMAScript 3基本保持兼容,較大的語法修正和新功能加入,將由JavaScript.next完成。當時,JavaScript.next指的是ECMAScript 6。第六版發布以后,將指ECMAScript 7。TC39預計,ECMAScript 5會在2013年的年中成為JavaScript開發的主流標準,并在此后五年中一直保持這個位置。 2011年6月,ECMAscript 5.1版發布,并且成為ISO國際標準(ISO/IEC 16262:2011)。到了2012年底,所有主要瀏覽器都支持ECMAScript 5.1版的全部功能。 2013年3月,ECMAScript 6草案凍結,不再添加新功能。新的功能設想將被放到ECMAScript 7。 2013年12月,ECMAScript 6草案發布。然后是12個月的討論期,聽取各方反饋。 2015年6月,ECMAScript 6正式發布,并且更名為“ECMAScript 2015”。這是因為TC39委員會計劃,以后每年發布一個ECMAScirpt的版本,下一個版本在2016年發布,稱為“ECMAScript 2016”。 除了ECMAScript的版本,很長一段時間中,Netscape公司(以及繼承它的Mozilla基金會)在內部依然使用自己的版本號。這導致了JavaScript有自己不同于ECMAScript的版本號。1996年3月,Navigator 2.0內置了JavaScript 1.0。JavaScript 1.1版對應ECMAScript 1.0,但是直到JavaScript 1.4版才完全兼容ECMAScript 1.0。JavaScript 1.5版完全兼容ECMAScript 3.0。目前的JavaScript 1.8版完全兼容ECMAScript 5。 ## 周邊大事記 JavaScript伴隨著互聯網的發展一起發展。互聯網周邊技術的快速發展,刺激和推動了JavaScript語言的發展。 1996年,樣式表標準CSS第一版發布。 1997年,DHTML(Dynamic HTML,動態HTML)發布,允許動態改變網頁內容。這標志著DOM模式(Document Object Model,文檔對象模型)正式應用。 1998年,Netscape公司開源了瀏覽器套件,這導致了Mozilla項目的誕生。幾個月后,美國在線(AOL)宣布并購Netscape。 1999年,IE 5部署了XMLHttpRequest接口,允許JavaScript發出HTTP請求,為后來大行其道的Ajax應用創造了條件。 2000年,KDE項目重寫了瀏覽器引擎KHTML,為后來的WebKit和Blink引擎打下基礎。這一年的10月23日,KDE 2.0發布,第一次將KHTML瀏覽器包括其中。 2001年,微軟公司時隔5年之后,發布了IE瀏覽器的下一個版本Internet Explorer 6。這是當時最先進的瀏覽器,它后來統治了瀏覽器市場多年。 2001年,Douglas Crockford提出了JSON格式,用于取代XML格式,進行服務器和網頁之間的數據交換。JavaScript可以原生支持這種格式,不需要額外部署代碼。 2002年,Mozilla項目發布了它的瀏覽器的第一版,后來起名為Firefox。 2003年,蘋果公司發布了Safari瀏覽器的第一版。 2004年,Google公司發布了Gmail,促成了互聯網應用程序(Web Application)這個概念的誕生。由于Gmail是在4月1日發布的,很多人起初以為這只是一個玩笑。 2004年,Dojo框架誕生,為不同瀏覽器提供了同一接口,并為主要功能提供了便利的調用方法。這標志著JavaScript編程框架的時代開始來臨。 2004年,WHATWG組織成立,致力于加速HTML語言的標準化進程。 2005年,蘋果公司在KHTML引擎基礎上,建立了WebKit引擎。 2005年,Ajax方法(Asynchronous JavaScript and XML)正式誕生,Jesse James Garrett發明了這個詞匯。它開始流行的標志是,2月份發布的Google Maps項目大量采用該方法。它幾乎成了新一代網站的標準做法,促成了Web 2.0時代的來臨。 2005年,Apache基金會發布了CouchDB數據庫。這是一個基于JSON格式的數據庫,可以用JavaScript函數定義視圖和索引。它在本質上有別于傳統的關系型數據庫,標識著NoSQL類型的數據庫誕生。 2006年,jQuery函數庫誕生,作者為John Resig。jQuery為操作網頁DOM結構提供了非常強大易用的接口,成為了使用最廣泛的函數庫,并且讓JavaScript語言的應用難度大大降低,推動了這種語言的流行。 2006年,微軟公司發布IE 7,標志重新開始啟動瀏覽器的開發。 2006年,Google推出 Google Web Toolkit 項目(縮寫為GWT),提供Java編譯成JavaScript的功能,開創了將其他語言轉為JavaScript的先河。 2007年,Webkit引擎在iPhone手機中得到部署。它最初基于KDE項目,2003年蘋果公司首先采用,2005年開源。這標志著JavaScript語言開始能在手機中使用了,意味著有可能寫出在桌面電腦和手機中都能使用的程序。 2007年,Douglas Crockford發表了名為《JavaScript: The good parts》的演講,次年由O'Reilly出版社出版。這標志著軟件行業開始嚴肅對待JavaScript語言,對它的語法開始重新認識, 2008年,V8編譯器誕生。這是Google公司為Chrome瀏覽器而開發的,它的特點是讓JavaScript的運行變得非常快。它提高了JavaScript的性能,推動了語法的改進和標準化,改變外界對JavaScript的不佳印象。同時,V8是開源的,任何人想要一種快速的嵌入式腳本語言,都可以采用V8,這拓展了JavaScript的應用領域。 2009年,Node.js項目誕生,創始人為Ryan Dahl,它標志著JavaScript可以用于服務器端編程,從此網站的前端和后端可以使用同一種語言開發。并且,Node.js可以承受很大的并發流量,使得開發某些互聯網大規模的實時應用變得容易。 2009年,Jeremy Ashkenas發布了CoffeeScript的最初版本。CoffeeScript可以被轉化為JavaScript運行,但是語法要比JavaScript簡潔。這開啟了其他語言轉為JavaScript的風潮。 2009年,PhoneGap項目誕生,它將HTML5和JavaScript引入移動設備的應用程序開發,主要針對iOS和Android平臺,使得JavaScript可以用于跨平臺的應用程序開發。 2009,Google發布Chrome OS,號稱是以瀏覽器為基礎發展成的操作系統,允許直接使用JavaScript編寫應用程序。類似的項目還有Mozilla的Firefox OS。 2010年,三個重要的項目誕生,分別是NPM、BackboneJS和RequireJS,標志著JavaScript進入模塊化開發的時代。 2011年,微軟公司發布Windows 8操作系統,將JavaScript作為應用程序的開發語言之一,直接提供系統支持。 2011年,Google發布了Dart語言,目的是為了結束JavaScript語言在瀏覽器中的壟斷,提供更合理、更強大的語法和功能。Chromium瀏覽器有內置的Dart虛擬機,可以運行Dart程序,但Dart程序也可以被編譯成JavaScript程序運行。 2011年,微軟工程師[Scott Hanselman](http://www.hanselman.com/blog/JavaScriptIsAssemblyLanguageForTheWebSematicMarkupIsDeadCleanVsMachinecodedHTML.aspx)提出,JavaScript將是互聯網的匯編語言。因為它無所不在,而且正在變得越來越快。其他語言的程序可以被轉成JavaScript語言,然后在瀏覽器中運行。 2012年,單頁面應用程序框架(single-page app framework)開始崛起,AngularJS項目和Ember項目都發布了1.0版本。 2012年,微軟發布TypeScript語言。該語言被設計成JavaScript的超集,這意味著所有JavaScipt程序,都可以不經修改地在TypeScript中運行。同時,TypeScript添加了很多新的語法特性,主要目的是為了開發大型程序,然后還可以被編譯成JavaScript運行。 2012年,Mozilla基金會提出[asm.js](http://asmjs.org/)規格。asm.js是JavaScript的一個子集,所有符合asm.js的程序都可以在瀏覽器中運行,它的特殊之處在于語法有嚴格限定,可以被快速編譯成性能良好的機器碼。這樣做的目的,是為了給其他語言提供一個編譯規范,使其可以被編譯成高效的JavaScript代碼。同時,Mozilla基金會還發起了[Emscripten](https://github.com/kripken/emscripten/wiki)項目,目標就是提供一個跨語言的編譯器,能夠將LLVM的位代碼(bitcode)轉為JavaScript代碼,在瀏覽器中運行。因為大部分LLVM位代碼都是從C / C++語言生成的,這意味著C / C++將可以在瀏覽器中運行。此外,Mozilla旗下還有[LLJS](http://mbebenita.github.io/LLJS/)(將JavaScript轉為C代碼)項目和[River Trail](https://github.com/RiverTrail/RiverTrail/wiki)(一個用于多核心處理器的ECMAScript擴展)項目。目前,在可以被編譯成JavaScript的[語言列表](https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS)上,共有將近40種語言。 2013年,Mozilla基金會發布手機操作系統Firefox OS,該操作系統的整個用戶界面都使用JavaScript。 2013年,ECMA正式推出JSON的[國際標準](http://www.ecma-international.org/publications/standards/Ecma-404.htm),這意味著JSON格式已經變得與XML格式一樣重要和正式了。 2013年5月,Facebook發布UI框架庫React,引入了新的JSX語法,使得UI層可以用組件開發。 2014年,微軟推出JavaScript的Windows庫WinJS,標志微軟公司全面支持JavaScript與Windows操作系統的融合。 2014年11月,由于對Joyent公司壟斷Node項目、以及該項目進展緩慢的不滿,一部分核心開發者離開了Node.js,創造了io.js項目,這是一個更開放、更新更頻繁的Node.js版本,很短時間內就發布到了2.0版。三個月后,Joyent公司宣布放棄對Node項目的控制,將其轉交給新成立的開放性質的Node基金會。隨后,io.js項目宣布回歸Node,兩個版本將合并。 2015年3月,Facebook公司發布了React Native項目,將React框架移植到了手機端,可以用來開發手機App。它會將JavaScript代碼轉為iOS平臺的Objective-C代碼,或者Android平臺的Java代碼,從而為JavaScript語言開發高性能的原生App打開了一條道路。 2015年4月,Angular框架宣布,2.0版將基于微軟公司的TypeScript語言開發,這等于為JavaScript語言引入了強類型。 2015年5月,Node模塊管理器npm超越CPAN,標志著JavaScript成為世界上軟件模塊最多的語言。 2015年5月,Google公司的Polymer框架發布1.0版。該項目的目標是生產環境可以使用WebComponent組件,如果能夠達到目標,Web開發將進入一個全新的以組件為開發基礎的階段。 2015年6月,ECMA標準化組織正式批準了ECMAScript 6語言標準,JavaScript語言正式進入了下一個階段,成為一種企業級的、開發大規模應用的語言。這個標準從提出到批準,歷時10年,而JavaScript語言從誕生至今也已經20年了。 2015年6月,Mozilla在asm.js的基礎上發布WebAssembly項目。這是一種JavaScript語言編譯后的二進制格式,類似于Java的字節碼,有利于移動設備加載JavaScript腳本,解析速度提高了20+倍。這意味著將來的軟件,會發布JavaScript二進制包。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看