1 定義
JavaScript是一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。
它的解釋器被稱爲JavaScript引擎,爲瀏覽器的一部分,普遍用於客戶端的腳本語言,最先是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增長動態功能。html
2 歷史
在1995年時,由Netscape公司的Brendan Eich,在網景導航者瀏覽器上首次設計實現而成。由於Netscape與Sun合做,Netscape管理層但願它外觀看起來像Java,所以取名爲JavaScript。但實際上它的語法風格與Self及Scheme較爲接近。
爲了取得技術優點,微軟推出了JScript,CEnvi推出ScriptEase,與JavaScript一樣可在瀏覽器上運行。爲了統一規格,由於JavaScript兼容於ECMA標準,所以也稱爲ECMAScript。程序員
3 相關術語:
ECMA:歐洲計算機制造商協會(Standard ECMA-262European Computer Manufacturers Association)。
TC39:ECMA第39號技術委員會(Technical Committee#39),由來自一些關注腳本語言發展的公司的程序員組成,負責制定一種通用、跨平臺、供應商中立的腳本語言。
ECMAScript:由ECMA制定,在ECMA-262中定義的腳本語言標準。ECMAScript只是一個腳本語言標準,你盡能夠在本身的環境中取實現它,這個環境,就稱爲ECMAScript的宿主環境,Web瀏覽器能夠說是ECMAScript目前最重要的宿主環境了,而不一樣的Web瀏覽器,對ECMAScript標準的支持也不盡相同。除Web瀏覽器,Adobe ActionScript也實現了ECMAScript。通常的宿主環境,除了實現ECMAScript標準,也會有各自的擴展,以便與環境更好的交互。
ES三、ES5:ECMAScript目前最新的版本是5.1版,發佈於2011年7月,能夠從其官方網站免費下載。最主要的兩個版本是第3版和第5版,分別簡稱爲ES3和ES5,目前五大瀏覽器(IE、Firefox、Chrome、Safari、Opera)都已經開始不一樣程度的支持ES5了,但目前在Web瀏覽器上兼容性最好的仍是第3版。介於向後兼容和安全上的考慮,第5版提供了普通和嚴格兩種模式,後面會再討論相關內容。
LiveScript、JavaScript、JScript:LiveScript是Netscape最初開發JavaScript時的名稱,在發佈時,爲了遇上Java的時髦,臨時修改成JavaScript了,而JScript則是微軟爲了防止版權衝突而給本身的腳本語言起的名稱。對於開發者來講,他們都只是ECMAScript的實現。通常來講,JavaScript的除了實現ECMAScript外,還會包括針對瀏覽器的擴展(BOM:瀏覽器對象模型)和針對XML/HTML API的擴展(DOM:文檔對象模型)。
DOM:文檔對象模型(Document Object Model),DOM標準由負責制定WEB通訊標準的W3C(World Web Consortium,萬維網聯盟)制定。DOM並不是針對JavaScript的,不少別的語言也都實現了DOM。目前DOM共有三級標準(DOM一、DOM二、DOM3),有時,也將DOM標準以前稱爲DOM0級,現代瀏覽器幾乎所有支持DOM2級標準,也部分支持DOM3級標準了。
BOM:瀏覽器對象模型(Browser Object Model)。編程
4 組成部分:瀏覽器
(1) ECMAScript,描述了該語言的語法和基本對象。
(2) 文檔對象模型(DOM),描述處理網頁內容的方法和接口。
(3) 瀏覽器對象模型(BOM),描述與瀏覽器進行交互的方法和接口。安全
5 基本特色
JavaScript是一種屬於網絡的腳本語言,已經被普遍用於Web應用開發,經常使用來爲網頁添加各式各樣的動態功能,爲用戶提供更流暢美觀的瀏覽效果。一般JavaScript腳本是經過嵌入在HTML中來實現自身的功能的。
(1) 是一種解釋性腳本語言(代碼不進行預編譯)。 [4]
(2) 主要用來向HTML(標準通用標記語言下的一個應用)頁面添加交互行爲。 [4]
(3) 能夠直接嵌入HTML頁面,但寫成單獨的js文件有利於結構和行爲的分離。 [4]
(4) 跨平臺特性,在絕大多數瀏覽器的支持下,能夠在多種平臺下運行(如Windows、Linux、Mac、Android、iOS等)。
Javascript腳本語言同其餘語言同樣,有它自身的基本數據類型,表達式和算術運算符及程序的基本程序框架。Javascript提供了四種基本的數據類型和兩種特殊數據類型用來處理數據和文字。而變量提供存放信息的地方,表達式則能夠完成較複雜的信息處理。服務器
6 應用用途
(1) 嵌入動態文本於HTML頁面。
(2) 對瀏覽器事件作出響應。
(3) 讀寫HTML元素。
(4) 在數據被提交到服務器以前驗證數據。
(5) 檢測訪客的瀏覽器信息。
(6) 控制cookies,包括建立和修改等。
(7) 基於Node.js技術進行服務器端編程。cookie
7 特性
JavaScript腳本語言具備如下特色:
(1) 腳本語言。JavaScript是一種解釋型的腳本語言,C、C++等語言先編譯後執行,而JavaScript是在程序的運行過程當中逐行進行解釋。
(2) 基於對象。JavaScript是一種基於對象的腳本語言,它不只能夠建立對象,也能使用現有的對象。
(3) 簡單。JavaScript語言中採用的是弱類型的變量類型,對使用的數據類型未作出嚴格的要求,是基於Java基本語句和控制的腳本語言,其設計簡單緊湊。
(4) 動態性。JavaScript是一種採用事件驅動的腳本語言,它不須要通過Web服務器就能夠對用戶的輸入作出響應。在訪問一個網頁時,鼠標在網頁中進行鼠標點擊或上下移、窗口移動等操做JavaScript均可直接對這些事件給出相應的響應。
(5) 跨平臺性。JavaScript腳本語言不依賴於操做系統,僅須要瀏覽器的支持。所以一個JavaScript腳本在編寫後能夠帶到任意機器上使用,前提上機器上的瀏覽器支 持JavaScript腳本語言,目前JavaScript已被大多數的瀏覽器所支持。 [3]
不一樣於服務器端腳本語言,例如PHP與ASP,JavaScript主要被做爲客戶端腳本語言在用戶的瀏覽器上運行,不須要服務器的支持。因此在早期程序員比較青睞於JavaScript以減小對服務器的負擔,而與此同時也帶來另外一個問題:安全性。
而隨着服務器的強壯,雖然程序員更喜歡運行於服務端的腳本以保證安全,但JavaScript仍然以其跨平臺、容易上手等優點大行其道。同時,有些特殊功能(如AJAX)必須依賴Javascript在客戶端進行支持。隨着引擎如V8和框架如Node.js的發展,及其事件驅動及異步IO等特性,JavaScript逐漸被用來編寫服務器端程序。網絡
8 功能框架
(1) 控制Html文檔的外觀和內容。
JavaScript能夠很輕鬆地動態改變網頁的CSS樣式和結構,甚至頁面顯示內容。這使整個頁面靈活性大大增長,可使用戶動態決定頁面的外觀和內容。異步
例:
<!DOCTYPE html> <html> <body> <h2>JavaScript 能作什麼</h2> <p id="demo">JavaScript 可以改變 HTML 內容。</p> <button type="button" onclick='document.getElementById("demo").innerHTML = "Hello JavaScript!"'>點擊我!</button> </body> </html>
例:
<!DOCTYPE html> <html> <body> <h2>JavaScript 可以作什麼</h2> <p id="demo">JavaScript 可以改變 HTML 元素的樣式。</p> <button type="button" onclick="document.getElementById('demo').style.fontSize='35px'"> 點擊我! </button> </body> </html>
例:
<!DOCTYPE html> <html> <body> <h2>JavaScript 可以作什麼</h2> <p id="demo">JavaScript 可以隱藏 HTML 元素。</p> <button type="button" onclick="document.getElementById('demo').style.display='none'"> 點擊我! </button> </body> </html>
例:
<!DOCTYPE html> <html> <body> <h2>JavaScript 可以作什麼</h2> <p>JavaScript 可以顯示隱藏的 HTML 元素。</p> <p id="demo" style="display:none">Hello JavaScript!</p> <button type="button" onclick="document.getElementById('demo').style.display='block'"> 點擊我! </button> </body> </html>
(2) 控制瀏覽器的行爲。
例如:瀏覽器的退後,刷新,加入收藏夾等操做。
(3) 用戶交互操做
如網上問卷等。
(4) 與頁面各類元素交互。
如操做圖片,與Flash動畫通訊等。
例:
<!DOCTYPE html> <html> <body> <h2>JavaScript 能作什麼?</h2> <p>JavaScript 可以改變 HTML 屬性值。</p> <p>在本例中,JavaScript 改變了圖像的 src 屬性值。</p> <button onclick="document.getElementById('myImage').src='/i/eg_bulbon.gif'">開燈</button> <img id="myImage" border="0" src="/i/eg_bulboff.gif" style="text-align:center;"> <button onclick="document.getElementById('myImage').src='/i/eg_bulboff.gif'">關燈</button> </body> </html>
(5) 讀寫部分客戶端信息。
如讀寫瀏覽者電腦的cookie信息。
9 侷限性 JavaScript程序和C++,C#,Java等程序對比而言,有很大的侷限性。(1) JavaScript是一種腳本程序,即經過解釋運行,沒有編譯,效率較低。(2) JavaScript代碼暴露在網頁源代碼中。(3) JavaScript只能嵌於網頁中使用,不能讀寫客戶端的程序(cookie除外)