javascript

直譯式腳本語言

JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。在1995年時,由Netscape公司的Brendan Eich,在網景導航者瀏覽器上首次設計實現而成。因為Netscape與Sun合作,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript。但實際上它的語法風格與Self及Scheme較為接近。為了取得技術優勢,微軟推出了JScript,CEnvi推出ScriptEase,與JavaScript同樣可在瀏覽器上運行。為了統一規格,因為JavaScript兼容於ECMA標準,因此也稱為ECMAScript。

腳本語言簡介


javascript
javascript
javascript是一種基於對象(Object)和事件驅動(Event Driven),並具有安全性能的腳本語言。使用它的目的是與HTML超文本標記語言、Java 腳本語言(Java小程序)一起實現在一個Web頁面中鏈接多個對象,與Web客戶交互的作用。從而可以開發客戶端的應用程序等。它是通過嵌入或調入在標準的HTML語言中實現的。它的出現彌補了HTML語言的缺陷,它是Java與HTML折衷的選擇。
javascript的出現,它可以使得信息和用戶之間不僅只是一種顯示和瀏覽的關係,而是實現了一種實時的、動態的、可互動式的表達能力。從而基於CGI靜態的HTML頁面將被可提供動態實時信息,並對客戶操作進行反應的Web頁面的取代。javascript腳本正是滿足這種需求而產生的語言。它深受廣泛用戶的喜愛和歡迎。它是眾多腳本語言中較為優秀的一種,它與WWW的結合有效地實現了網路計算和網路計算機的藍圖。無疑Java家族將佔領Internet網路的主導地位。因此,儘快掌握javascript腳本語言編程方法是我國廣大用戶日益關心的問題。

腳本語言作者

布蘭登·艾奇(Brendan Eich,1964年~),JavaScript的發明人,從2007年開始在Mozilla公司擔任首席技術長官(Chief Technology Officer)。2014年3月25日據國外媒體消息,Mozilla宣布由原技術長兼聯合創始人Brendan Eich接任新執行官職位,同時現任執行官Gary Kovacs將正式退位。

發展歷史

大概在1998年,一家稱作Nombas的公司開始開發一種叫做C減減(C-minus-minus,簡稱Cmm)的嵌入式腳本語言。這個腳本語言捆綁在一個叫做CEnvi的共享軟體產品中,當Netscape Navigator嶄露頭角時,Nombas開發了一個可以嵌入網頁中的CEnvi的版本。這些早期的試驗稱為EspressoPage(濃咖啡般的頁面),它們代表了第一個在萬維網上使用的客戶端腳本語言。而Nombas絲毫沒有料到它的理念將會成為網際網路的一塊重要基石。
它最初由Netscape的Brendan Eich設計。JavaScript是甲骨文公司的註冊商標。Ecma國際以JavaScript為基礎制定了ECMAScript標準。JavaScript也可以用於其他場合,如伺服器端編程。完整的JavaScript實現包含三個部分:ECMAScript,文檔對象模型,瀏覽器對象模型。
Netscape在最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。JavaScript最初受Java啟發而開始設計的,目的之一就是“看上去像Java”,因此語法上有類似之處,一些名稱和命名規範也借自Java。但JavaScript的主要設計原則源自Self和Scheme。JavaScript與Java名稱上的近似,是當時Netscape為了營銷考慮與Sun微系統達成協議的結果。為了取得技術優勢,微軟推出了JScript來迎戰JavaScript的腳本語言。為了互用性,Ecma國際(前身為歐洲計算機製造商協會)創建了ECMA-262標準ECMAScript。兩者都屬於ECMAScript的實現。儘管JavaScript作為給非程序人員的腳本語言,而非作為給程序人員的腳本語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。
發展初期,JavaScript的標準並未確定,同期有Netscape的JavaScript,微軟的JScript和CEnvi的ScriptEase三足鼎立。1997年,在ECMA歐洲計算機製造商協會的協調下,由Netscape、Sun、微軟、Borland組成的工作組確定統一標準:ECMA-262。

腳本語言組成


一個完整的 JavaScript 實現是由以下3個不同部分組成的:
ECMAScript,描述了該語javascript組成 言的語法和基本對象。
文檔對象模型(DOM),描述處理網頁內容的方法和介面。
瀏覽器對象模型(BOM),描述與瀏覽器進行交互的方法和介面。

腳本語言概念


語句
JavaScript程序是由若干語句組成的,語句是編寫程序的指令。JavaScript提供了完整的基本編程語句,它們是:
賦值語句、switch選擇語句、while循環語句、for循環語句、for each循環語句、do...while循環語句、break循環中止語句、continue循環中斷語句、with語句、try…catch語句、if語句(if..else,if…else if…)。
函數
函數是命名的語句段,這個語句段可以被當作一個整體來引用和執行。使用函數要注意以下幾點:
1)函數由關鍵字function定義(也可由Function構造函數構造)。
2)使用function關鍵字定義的函數在一個作用域內是可以在任意處調用的(包括定義函數的語句前);而用var關鍵字定義的必須定義后才能被調用。
3)函數名是調用函數時引用的名稱,區分大小寫,調用函數時不可寫錯函數名。
4)參數表示傳遞給函數使用或操作的值,它可以是常量,也可以是變數,也可以是函數,在函數內部可以通過arguments對象(arguments對象是一個偽數組,屬性callee引用被調用的函數)訪問所有參數。
5)return語句用於返回表達式的值。
6)yield語句扔出一個表達式,並且中斷函數執行直到下一次調用next。
一般的函數都是以下格式:
1functionmyFunction(params){
2//執行的語句
3}
函數表達式
var myFunction=function(params){
//執行的語句
}
var myFunction=function(){
//執行的語句
}
my Function();//調用函數
匿名函數,它常作為參數在其他函數間傳遞:
1window.addEventListener('load',function(){
2//執行的語句
3},false;
對象
JavaScript的一個重要功能就是面向對象的功能,通過基於對象的程序設計,可以用更直觀、模塊化和可重複使用的方式進行程序開發。
一組包含數據的屬性和對屬性中包含數據進行操作的方法,稱為對象。比如要設定網頁的背景顏色,所針對的對象就是document,所用的屬性名是bgcolor,如document.bgcolor=blue,就是表示使背景的顏色為藍色。
內置對象
JavaScript字元串String對象
字元串是JavaScript的一種基本的數據類型。需要注意的是,JavaScript 的字元串不可變(immutable),String 類定義的方法都不能改變字元串的內容。像 String.toUpperCase()這樣的方法,返回的是全新的字元串,而不是修改原始字元串。
String對象的 length 屬性聲明了該字元串中的字元數。
String類定義了大量操作字元串的方法,一般分為這樣幾類:查找子字元串、截取,分割和拼接字元串、匹配正則表達式、改變字元串樣式等。
JavaScriptDate日期對象
Date對象用於處理日期和時間,Date 對象會自動把當前日期和時間保存為其初始值。
Date對象的大部分方法是以下幾類:
getXXX:獲取 年、月、日、時、分、秒、等等。
setXXX:設置 年、月、日、時、分、秒、等等。
toXXXString:轉成一定格式的字元串。
JavaScriptArray數組對象
數組對象的作用是:使用單獨的變數名來存儲一系列的值。
數組的常用屬性是:length,代表了這個數組中元素的個數。
數組的常用方法分這麼幾類:排序、添加和刪除元素、拼接另一個數組、轉成字元串。其中添加元素和移除元素的幾個方法還有模擬堆棧或隊列這些數據結構的作用。
JavaScriptBoolean邏輯對象
Boolean(邏輯)對象用於將非邏輯值轉換為邏輯值(true 或者 false)。
在 JavaScript中,布爾值是一種基本的數據類型。Boolean對象是一個將布爾值打包的布爾對象。Boolean對象主要用於提供將布爾值轉換成字元串的toString()方法。當調用toString()方法將布爾值轉換成字元串時(通常是由JavaScript 隱式地調用),JavaScript 會內在地將這個布爾值轉換成一個臨時的 Boolean 對象,然後調用這個對象的 toString()方法。
JavaScriptMath(算數)對象
Math(算數)對象的作用是:執行常見的算數任務。
Math對象並不像 Date 和 String 那樣是對象的類,因此沒有構造函數 Math(),像 Math.sin() 這樣的函數只是函數,不是某個對象的方法。您無需創建它,通過把 Math 作為對象使用就可以調用其所有屬性和方法。(相當於靜態類和靜態方法)
Math對象的常用屬性都是數學相關的常量屬性,如圓周率π、2的平方根,算數常量e(自然對數的底數,約等於2.718)。
Math對象中最常用的方法有這樣一些:向上(向下)取整、四捨五入取整、隨機數、返回2個數中的大數或小數。
JavaScriptRegExp 對象
什麼是 RegExp?
RegExp是正則表達式的縮寫。當您檢索某個文本時,可以使用一種模式來描述要檢索的內容。RegExp 就是這種模式。簡單的模式可以是一個單獨的字元。更複雜的模式包括了更多的字元,並可用於解析、格式檢查、替換等等。您可以規定字元串中的檢索位置,以及要檢索的字元類型,等等。
這個知識點,相對還是比較繁雜的,想熟練掌握是需要花費一些功夫的,具體請看 JS 手冊。
JavaScriptGlobal對象
這是一個固有對象,目的是把所有全局方法集中在一個對象中。Global 對象不能用 new 運算符創建。它在 Scripting 引擎被初始化時創建,並立即使其方法和屬性可用。
屬性:Infinity 屬性|NaN屬性
方法:escape方法|eval方法|isFinite方法|isNaN方法|parseFloat方法|parseInt方法|unescape方法
事件
用戶與網頁交互時產生的操作,稱為事件。事件可以由用戶引發,也可能是頁面發生改變,甚至還有你看不見的事件(如Ajax的交互進度改變)。絕大部分事件都由用戶的動作所引發,如:用戶按滑鼠的按鍵,就產生click事件,若滑鼠的指針在鏈接上移動,就產生mouseover事件等等。在JavaScript中,事件往往與事件處理程序配套使用。
而對事件的處理,W3C的方法是用addEventListener函數,它有三個參數:事件,引發的函數,是否使用事件捕捉。為了安全性,建議將第三個參數始終設置為false
傳統的方法就是定義元素的on…事件,它就是W3C的方法中的事件參數前加一個“on”。而IE的事件模型使用attachEvent和dettachEvent對事件進行綁定和刪除。JavaScript中事件還分捕獲和冒泡兩個階段,但是傳統綁定只支持冒泡事件。
常用類型
Object:對象
Array:數組
Number:數
Boolean:布爾值,只有true和false兩個值,是所有類型中佔用內存最少的
null:一個空值,唯一的值是null,表空引用
undefined:沒有定義或賦值的變數
NaN:非數字類型
命名形式一般形式是:var <變數名表>;
其中,var是javascript的保留字,表面接下來是變數說明,變數名表是用戶自定義標識符,變數之間用逗號分開。和C++等程序不同,在javascript中,變數說明不需要給出變數的數據類型。此外,變數也可以不說明而直接使用。
作用域
變數的作用域由聲明變數的位置決定,決定哪些腳本命令可訪問該變數。在函數外部聲明的變數稱為全局變數,其值能被所在HTML文件中的任何腳本命令訪問和修改。在函數內部聲明的變數稱為局部變數。只有當函數被執行時,變數被分配臨時空間,函數結束后,變數所佔據的空間被釋放。局部變數只能被函數內部的語句訪問,只對該函數是可見的,而在函數外部是不可見的。

日常用途


1、嵌入動態文本於HTML頁面。
2、對瀏覽器事件做出響應。
3、讀寫HTML元素。
4、在數據被提交到伺服器之前驗證數據。
5、檢測訪客的瀏覽器信息。
6、控制cookies,包括創建和修改等。
7、基於Node js技術進行伺服器端編程。

腳本語言特性


JavaScript腳本語言具有以下特點:
腳本語言。JavaScript是一種解釋型的腳本語言,C、C++等語言先編譯后執行,而JavaScript是在程序的運行過程中逐行進行解釋。
基於對象。JavaScript是一種基於對象的腳本語言,它不僅可以創建對象,也能使用現有的對象。
簡單。JavaScript語言中採用的是弱類型的變數類型,對使用的數據類型未做出嚴格的要求,是基於Java基本語句和控制的腳本語言,其設計簡單緊湊。
動態性。JavaScript是一種採用事件驅動的腳本語言,它不需要經過Web伺服器就可以對用戶的輸入做出響應。在訪問一個網頁時,滑鼠在網頁中進行滑鼠點擊或上下移、窗口移動等操作JavaScript都可直接對這些事件給出相應的響應。
跨平台性。JavaScript腳本語言不依賴於操作系統,僅需要瀏覽器的支持。因此一個JavaScript腳本在編寫后可以帶到任意機器上使用,前提上機器上的瀏覽器支持JavaScript腳本語言,目前JavaScript已被大多數的瀏覽器所支持。
不同於伺服器端腳本語言,例如PHP與ASP,JavaScript主要被作為客戶端腳本語言在用戶的瀏覽器上運行,不需要伺服器的支持。所以在早期程序員比較青睞於JavaScript以減少對伺服器的負擔,而與此同時也帶來另一個問題:安全性。
而隨著伺服器的強壯,雖然程序員更喜歡運行於服務端的腳本以保證安全,但JavaScript仍然以其跨平台、容易上手等優勢大行其道。同時,有些特殊功能(如AJAX)必須依賴Javascript在客戶端進行支持。隨著引擎如V8和框架如Node.js的發展,及其事件驅動及非同步IO等特性,JavaScript逐漸被用來編寫伺服器端程序。

編程簡介


JavaScript是一種腳本語言,其源代碼在發往客戶端運行之前不需經過編譯,而是將文本格式的字元代碼發送給瀏覽器由瀏覽器解釋運行。直譯語言的弱點是安全性較差,而且在JavaScript中,如果一條運行不了,那麼下面的語言也無法運行。而其解決辦法就是於使用try{}catch(){}︰
console.loga//這是正確的
console.logb//這是正確的
console.loggc//這是錯誤的,並且到這裡會停下來
console.logd//這是正確的
console.loge//這是正確的
try{console.loga}catch(e){}//這是正確的
try{console.logb}catch(e){}//這是正確的
try{console.loggc}catch(e){}//這是錯誤的,但是到這裡不會停下來,而是跳過
try{console.logd}catch(e){}//這是正確的
try{console.loge}catch(e){}//這是正確的
Javascript被歸類為直譯語言,因為主流的引擎都是每次運行時載入代碼並解譯。V8是將所有代碼解譯后再開始運行,其他引擎則是逐行解譯(SpiderMonkey會將解譯過的指令暫存,以提高性能,稱為實時編譯),但由於V8的核心部份多數用Javascript撰寫(而SpiderMonkey是用C++),因此在不同的測試上,兩者性能互有優劣。與其相對應的是編譯語言,例如C語言,以編譯語言編寫的程序在運行之前,必須經過編譯,將代碼編譯為機器碼,再加以運行。

運算符簡介


javascript提供了豐富的運算功能,包括算術運算、關係運算、邏輯運算和連接運算。
1、算術運算符
javascript中的算術運算符有單目運算符和雙目運算符。雙目運算符包括:+(加)、-(減)、*(乘)、/(除)、%(取余)、|(按位或)、&(按位與)、<<(左移)、>>(右移)等。單目運算符有:-(取反)、~(取補)、++(遞加1)--(遞減1)等。
2、關係運算符
關係運算符又稱比較運算,運算符包括:<(小於)、<=(小於等於)、>(大於)、>=(大於等於)、==(等於)和!=(不等於)以及 ===) 和 !==。
關係運算的運算結果為布爾值,如果條件成立,則結果為true,否則為false。
3、邏輯運算符
邏輯運算符有:&&(邏輯與)、||(邏輯或)、!(取反,邏輯非)、^(邏輯異或)。
4.字元串連接運算符
連接運算用於字元串操作,運算符為+(用於強制連接),將兩個或多個字元串連結為一個字元串。
5.三目操作符?:
三目操作符“?:”格式為:
操作數?表達式1:表達式2
三目操作符“?:”構成的表達式,其邏輯功能為:若操作數的結果為true,則表述式的結果為表達式1,否則為表達式2。例如max=(a>b)?a:b;該語句的功能就是將a,b中的較大的數賦給max。
相關規則
在JavaScript中,“===”是全同運算符,只有當值相等,數據類型也相等時才成立。
等同運算符“==”的比較規則:
當兩個運算數的類型不同時:將他們轉換成相同的類型。
1、一個數字與一個字元串,字元串轉換成數字之後,進行比較。
2、true轉換為1、false轉換為0,進行比較。
3、一個對象、數組、函數與 一個數字或字元串,對象、數組、函數轉換為原始類型的值,然後進行比較。先使用valueOf,如果不行就使用toString
4、其他類型的組合不相等。
想兩個運算數類型相同,或轉換成相同類型后:
1、2個字元串:同一位置上的字元相等,2個字元串就相同。
2、2個數字:2個數字相同,就相同。如果一個是NaN,或兩個都是NaN,則不相同。
3、2個都是true,或者2個都是false,則相同。
4、2個引用的是同一個對象、函數、數組,則他們相等,如果引用的不是同一個對象、函數、數組,則不相同,即使這2個對象、函數、數組可以轉換成完全相等的原始值。
5、2個null,或者2個都是未定義的,那麼他們相等。
而“===”是全同運算符,全同運算符遵循等同運算符的比較規則,但是它不對運算數進行類型轉換,當兩個運算數的類型不同時,返回false;只有當兩個運算數的類型相同的時候,才遵循等同運算符的比較規則進行比較。
例如:null==undefined 會返回真,但是null===undefined 就會返回假!
表達式 表達式是指將常量、變數、函數、運算符和括弧連接而成的式子。根據運算結果的不同表達式可分為算術表達式、字元表達式、和邏輯表達式。
腳本語言
javascript
javascript
解釋語言的弱點是安全性較差,而且在JavaScript中,如果一條運行不了,那麼下面的語言也無法運行。而且由於每次重新載入都會重新解譯,載入后,有些代碼會延遲至運行時才解譯,甚至會多次解譯,所以速度較慢。
與其相對應的是編譯語言,例如Java。Java的源代碼在傳遞到客戶端運行之前,必須經過編譯,因而客戶端上必須具有相應平台上的模擬器或解釋器,它可以通過編譯器或解釋器實現獨立於某個特定的平台編譯代碼的束縛。但是它必須在伺服器端進行編譯,這樣就拖延了時間。但因為已經封裝,所以能保證安全性。

Javascript庫

庫,指得是可以方便應用到現有開發體系中的、現成的代碼資源。庫不僅為大部分日常的DOM腳本編程工作提供了快捷的解決方案,而且也提供了許多獨特的工具。雖然庫使用起來很方便,但它們也並非能解決你所有的問題。在使用庫之前,一定要保證真正理解javascript的DOM原理。
這些庫一般是一個(或多個)js(Javascript的縮寫)文件,只要把他們導入你的網頁就能使用了。
常用的庫有:
jQuery:javascript庫中的新成員,提供css和xpath選擇符查找元素、ajax、動畫效果等
JSer: 國人開發的一款全功能的開源腳本框架. 藉助JSer,可以便捷的操作DOM、CSS樣式訪問、屬性讀寫、事件綁定、行為切換、動態載入、數據緩存、URL與AJAX等眾多功能。
dojo:一個巨大的庫,包括的東西很多,dijit和dojox是dojo的擴展,幾乎你想要的各種javascript程序都包括了。
prototype:一個非常流行的庫,使用了原型鏈向javascript中添加了很多不錯的函數
YUI:YahooYUI庫yahoo!用戶界面,非常實用,提供各種解決方案。
ExtJs:組件非常豐富,皮膚也很漂亮,動畫效果也豐富。
基本特點
網頁嵌入技術有:Javascript、VBScript、Document Object Model(DOM,文檔對象模型)、Layers和Cascading Style Sheets(CSS,層疊樣式表),這裡主要講Javascript。
Javascript就是適應動態網頁製作的需要而誕生的一種新的編程語言,如今越來越廣泛地使用於Internet網頁製作上。Javascript是由 Netscape公司開發的一種腳本語言(scripting language),或者稱為描述語言。在HTML基礎上,使用Javascript可以開發互動式Web網頁。Javascript的出現使得網頁和用戶之間實現了一種實時性的、動態的、交互性的關係,使網頁包含更多活躍的元素和更加精彩的內容。運行用Javascript編寫的程序需要能支持Javascript語言的瀏覽器。Netscape公司 Navigator 3.0以上版本的瀏覽器都能支持Javascript程序,微軟公司Internet Explorer 3.0以上版本的瀏覽器基本上支持Javascript。微軟公司還有自己開發的Javascript,稱為JScript。Javascript和Jscript基本上是相同的,只是在一些細節上有出入。 Javascript短小精悍,又是在客戶機上執行的,大大提高了網頁的瀏覽速度和交互能力。同時它又是專門為製作Web網頁而量身定做的一種簡單的編程語言。
JavaScript使網頁增加互動性。JavaScript 使有規律地重複的HTML文段簡化,減少下載時間。JavaScript 能及時響應用戶的操作,對提交表單做即時的檢查,無需浪費時間交由CGI 驗證。JavaScript 的特點是無窮無盡的,只要你有創意。

開發工具


javascript
javascript
在如今網路開發方面,JavaScript起了很關鍵的作用;像jQuery,MooTools,Prototype等等JavaScript框架以及其它JavaScript類庫讓我們的生活輕鬆了不少。但是隨著Rich Internet Applications(RIA)的面世及迅速應用,書寫更強大,更堅實可靠的JavaScript的需要日益迫切。
比較常用的開發框架處理前面提到的jQuery,MooTools,Prototype外,還有如YUI Library、DevExtreme、Bookmarklet Generator、Dojo Toolkit、Modernizr等。
javascript程序是純文本的,且不需要編譯,所以任何純文本的編輯器都可以編輯javascript文件。
測試工具
JSLint–JavaScript的驗證器
JSLint取得一個JavaScript源代碼並對其掃描。如果發現問題,它送回信息描述問題狀況及在源代碼中的大概位置。問題不一定就出在句法上,不過常常正是這裡出錯。JSLint查看一些風格約定和結構問題,它證明不了程序是否正確。它只是提供了另一雙眼睛來幫助發現問題。
JsUnit
JsUnit是一個客戶端(內瀏覽器)JavaScript單元測試框架。它其實是JUnit給JavaScript的一個口岸。其中還有一個平台來在多個瀏覽器上以及運行不同操作系統的多個機器上的自動執行測試。
YUITest
YUITest是一個測試框架,它針對基於瀏覽器的JavaScript解決方案。你可以用YUI Test在JavaScript 解決方案上輕鬆添加單元測試。
ObtrusiveJavaScript Checker
可作為Firefox擴展,Greasemonkey用戶腳本,以及Ubiquity命令;Obtrusive JavaScript Checker是一種可以掃過頁面上所有元素的工具,發現帶有行內事件的HTML元素(這是有危害性的,JavaScript應該是不張揚的)時,它給這部分加紅邊使其凸顯。
Crosscheck
Crosscheck是一個開源測試框架,驗證內瀏覽器JavaScript代碼。它幫助你確保代碼可以在Internet Explorer和Firefox等種種不同的瀏覽器上運行,而這些瀏覽器都不需要安裝。
JSLitmus
JSLitmus是一個輕量級工具用來製作JavaScript的特定標準測試。
JavaScriptMVC的測試插件
JavaScriptMVC的測試庫提供事件模擬,單元測試,Ajax夾具,和一個控制台程序。
調試工具
Javascript調試工具包
JavaScript調試工具包是一種跨瀏覽器調試JavaScript的eclipse plugin,它可以在IE,Firefox,Safari,Chrome,Opera甚至是移動瀏覽器上調試JavaScript。
Firebug
作為最受歡迎的網頁開發程序工具,Firebug是Firefox的一個插件,可以用它在任何網頁上現時編輯,調試和監控CSS, HTML, 和JavaScript。它提供給JavaScript登陸和調試控制台一些有用的功能如AJAX requests logging,JavaScript解釋器,DOM explorer等等。Firebug Lite 可以在IE, Opera, 和Safari上使用。
Venkman
Venkman為基於Gecko的瀏覽器提供功能強大JavaScript調試環境。這個調試器以Firefox & Mozilla插件的形式使用。可以在用戶界面上和控制台命令中使用斷點管理,調用棧檢查,變數/對象檢查等功能,可以讓你以最習慣的方式調試。
NitobiBug
NitobiBug是一種基於瀏覽器的JavaScript對象記錄和檢查工具——與Firebug作用相似。NitobiBug在可以在不同的伺服器(IE6+,Safari,Opera, Firefox)上運行以提供開發各種Ajax應用程序一致且功能強大的工具。
DamnIT
DamnIT是一種免費服務,當用戶在網頁上遇到JavaScript錯誤時它會給你發送電子郵件。
JSBin
JSBin是一種在線網路應用程序,為幫助JavaScript開發者在一定情景里測試代碼片段以及協作調試代碼而特別設計。你可以用JS Bin在線編輯測試JavaScript和HTML代碼。一旦完成,你可以將URL保存併發送給同伴來進行審查或獲得幫助。
Blackbird
許多JavaScript開發者僅僅使用alert()來顯示各種信息調試代碼。Blackbird在JavaScript上提供了記錄信息的簡單方式以及一個引人注意的控制台程序來察看並過濾信息。

壓縮工具

OnlineJavascript Compression Tool
一個可以用一些壓縮演演算法如JSMin 和Packer壓縮JavaScript文件的在線JavaScript壓縮器。壓縮的JavaScript文件是生產環境中的理想文件,因為它們常常將文件大小減小30-90%。在很大程度上,文件尺寸的縮小是通過除去網頁瀏覽者或訪問者不需要的註釋和多餘的空格字元來實現的。
Scriptalizer
一個將多個JavaScript文件組合為一個文件的在線工具。
DojoShrinkSafe
一種命令行實用程序,允許你用瀏覽器縮小文件大小,從而縮短響應時間。Dojo壓縮器不是建立在脆弱的規則表達式基礎上的。它基於來自莫茲拉專案的JavaScript引擎。由於一個基於真正的parse stream,Dojo壓縮器比基於規則表達式的工具可以更好體現代符(變數名等等)的環境。
YUICompressor
TheYUI Compressor是一種JavaScript壓縮器。去除註釋和空格之外,它還可以用最小可用變數名混淆局部變數。即使在使用‘eval’或‘with’之類構造(在這些情況下壓縮並不合適),這種混淆也是安全的。與jsmin相比,它平均節省20%。
文件記載
jGrouseDoc
jGrouseDoc可以從源代碼中的註釋生成API文件。用戶可以用這個工具記載需要的所有構造——不僅有函數和變數,還有類文件包,界面,命名空間,包和其它。使用那種JavaScript框架是無關緊要的——用戶可以不採取框架或工具強加的方式而以自己希望的方式記錄代碼,

格式工具

JavaScript代碼美化工具
這個美化工具可處理散亂或壓縮的JavaScript代碼,不斷對其進行快速的格式化並使其可讀。
JSDocToolkit
JavaScript的一種文件產生器,以JavaScript形式寫成;它自動從加註的JavaScript源代碼中生成格式模版化,多頁面HTML(或標準通用標記語言下的一個子集XML、JSON、抑或其它文本)。

瀏覽器擴展

Firefox,Flock & Seamonkey的網路開發人員擴展
網路開發人員拓展在瀏覽器中增加了一個菜單和工具條,其中包含許多網路開發工具包括能使你的XHTML生效,發現JavaScript/CSS的錯誤,網頁結構可視化,測試網路表單,改變運行中的XHTML,檢查HTTP頭信息等等。
OperaDragonfly
OperaDragonfly 是Opera瀏覽器的跨設備,跨平台調試環境—調試JavaScript, 檢查編輯CSS和DOM,並且查看移動設備或計算機上的錯誤。

開發工具條

微軟的英特網瀏覽器開發者工具條為網頁的快速創建,理解和故障診斷提供了各種的工具。

其它相應工具

Google的AJAX APIs Playground
AJAXAPI Playground裝載有Google JavaScript APIs(Maps,Search,Feeds,Calendar,Visualization,Language,Blogger,Libraries和Earth,等等)例子,你可以編輯運行這些例子幫助你探究Google的APIs可提供的功能。同時也還有保存和輸出功能。你可以用保存功能保持編輯的例子以留待以後使用。而輸出功能可用來修改例子並把代碼公布在一個永久的URL上。
QuirksMode–相容性表
檢查CSS2、CSS3、DOM Core、DOM HTML、DOM CSS、DOM Events和CSS Object Model View主要瀏覽器相容性狀態的最受歡迎的出處。

轉換工具


HTML到JavaScript轉換器獲得置標並將它轉換成一系列可以在JavaScript塊中使用的document.write()申明。
Glimmer
Glimmer是一種桌面應用軟體,可以用它利用jQuery庫的作用在網頁上輕鬆製作互動式元素。可以用它輕鬆製作交錯感受如旋轉相冊/報頭,下拉導航,懸停效果,或自定義動畫。
jQueryFunction Builder
你可以用這個工具很快建立一個函數集,當頁面載入完畢/準備完畢時,調用該函數集。
JavaScriptRegex Generator
一個製作正則表達式的在線工具。

HTTP監控


Fiddler是一種Web調試代理,它記錄你的電腦和網路之間所有的HTTP(S)流量。可以用Fiddler檢查所有HTTP(S)流量,設置斷點,干涉進來或出去的數據。
TamperData
TamperData是一個追蹤並修改http/https請求的Firefox擴展。可以用它做基於網路的應用程序的安全測試,追蹤請求/回應。
LiveHTTP Headers
可以在瀏覽的時候查看網頁的HTTP headers。可以用Live HTTP Headers調試網頁應用程序,找出遠端網站使用的是那種網站伺服器,或者查看遠端網站發送的小數據文件。

開發環境


AptanaStudio
AptanaStudio是一個完整的網路開發環境。它提供有JavaScript代碼自動完成和調試,HTML/CSS/JavaScript代碼提示,以及對重要的Ajax類庫的支持。Aptana Studio甚至給你頁面上所有的,包括你自己的JavaScript提供代碼提示。
KomodoEdit
KomodoEdit是一種免費開放的源編輯程序。它提供自動完成,調用提示,多種語言支持,語法高亮顏色顯示,語法檢查,Vi emulation,Emacs快捷鍵綁定等等功能。

基本特點


JavaScript是一種屬於網路的腳本語言,已經被廣泛用於Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。
1、是一種解釋性腳本語言(代碼不進行預編譯)。
2、主要用來向HTML(標準通用標記語言下的一個應用)頁面添加交互行為。
3、可以直接嵌入HTML頁面,但寫成單獨的js文件有利於結構和行為的分離。
4、跨平台特性,在絕大多數瀏覽器的支持下,可以在多種平台下運行(如Windows、Linux、Mac、Android、iOS等)。
Javascript腳本語言同其他語言一樣,有它自身的基本數據類型,表達式和算術運算符及程序的基本程序框架。Javascript提供了四種基本的數據類型和兩種特殊數據類型用來處理數據和文字。而變數提供存放信息的地方,表達式則可以完成較複雜的信息處理。

版本介紹


JavaScript已經被Netscape公司提交給ECMA制定為標準,稱之為ECMAScript,標準編號ECMA-262。目前最新版為ECMA-262 5th Edition。符合ECMA-262 3rd Edition標準的實現有:
1、Microsoft公司的JScript.
2、Mozilla的JavaScript-C(C語言實現),現名SpiderMonkey
3、Mozilla的Rhino(Java實現)
4、Digital Mars公司的DMDScript
5、Google公司的V8
6、WebKit
版本發布日期基於Netscape NavigatorMozilla FirefoxInternet ExplorerOperaSafariGoogle Chrome
1.01996年3月2.0
1.11996年8月3.03.0
1.21997年6月4.0-4.05
1.31998年10月ECMA-262 1 edition / ECMA-262 2 edition4.06-4.7x4.0
1.4
Netscape
Server
1.52000年11月ECMA-262 3 edition6.01.0
5.5 (JScript 5.5),
6 (JScript 5.6),
7 (JScript 5.7),
8 (JScript 6)
6.0,
7.0,
8.0,
9.0
1.62005年11月1.5 + Array extras + Array and String generics + E4X1.53.0, 3.1
1.72006年10月1.6 + Pythonic generators + Iterators + let2.03.2, 4.01.0
1.82008年6月1.7 + Generator expressions + Expression closures3.011.50
1.8.11.8 + Native JSON support + Minor Updates3.5
1.8.22009年6月22日1.8.1 + Minor updates3.6
1.8.52010年7月27日1.8.1 + ECMAScript 5 Compliance4911.60
比較
版本說明實現
ECMA v1標準化了JavaScript1.1的基本特性,並添加了一些新特性。沒有標準化switch語句和正則表達式。由Netscape 4.5和IE 4實現。
ECMA v2ECMA v1的維護版本,只添加了說明由Netscape 4.5和IE 4實現。
ECMA v3標準化了switch語句、異常處理和正則表達式。由Mozilla、Netscape 6和IE 5.5實現。