JavaScript 指令碼語言作為一門功能強大、使用範圍較廣的程式語言,其語言基礎包括資料類型、變數、運算子、函數以及核心語句等內容。本篇文章主要介紹JavaScript 指令碼語言的基礎知識
一:基礎常識
1.指令碼執行順序:JavaScript 指令碼解譯器將按照程式碼出現的順序來解釋程式語句,因此可以將函數定義和變數聲明放在<head>和</head>之間,此時與函數體相關的操作不會被立即執行。
2.大小寫敏感:JavaScript 指令碼程式對大小寫敏感,相同的字母,大小寫不同,代表的意義也不同
空白字元
3.空__________白字元包括空格、定位字元和分行符號等,在編寫指令碼代碼時佔據一定的空間,但指令碼被瀏覽器解釋執行時無任何作用。指令碼程式員經常使用空格作為空白字元,JavaScript 指令碼解譯器是忽略任何多餘空格的
註:在字串中,空格不被忽略,而作為字串的一部分顯示出來,在編寫 JavaScript 指令碼代碼時,經常需添加適當的空格使指令碼代碼層次明晰,方便相關人員查看和維護。
4.分號:在編寫指令碼語句時,用分號作為當前語句的結束符
5.塊:在定義函數時,使用大括弧“{}”將函數體封裝起來
二:資料類型
首先要說明的是在javascript中沒有特定的資料類型修飾符,基本資料類不管是什麼類型,在定義的時候都是用var
1.整型和浮點數值:JavaScript 允許使用整數類型和浮點類型兩種數值,其中整數類型包含正整數、0 和負整數;而浮點數則可以是包含小數點的實數,也可以是用科學計數法表示的實數
2 八進位和十六進位:在整數類型的數值中,數制可使用十進位、八進位以及十六進位
三.變數
1.變數標識符:與C++、Java 等進階程式語言使用多個變數標識符不同,JavaScript 指令碼語言使用關鍵字var 作為其唯一的變數標識符,其用法為在關鍵字var 後面加上變數名。
2.變數範圍:要討論變數的範圍,首先要清楚全域變數和局部變數的聯絡和區別:
��� 全域變數:可以在指令碼中的任何位置被調用,全域變數的範圍是當前文檔中整個指令碼地區。
��� 局部變數:只能在此變數聲明語句所屬的函數內部使用,局部變數的範圍僅為該函數體。
聲明變數時,要根據編程的目的決定將變數聲明為全域變數還是局部變數。一般而言,儲存全域資訊(如表格的原始大小、下拉框包含選項對應的字串數組等)的變數需聲明為全域變數,而儲存臨時資訊(如待輸出的格式字串、數學運算中間變數等)的變數則聲明
為局部變數。
3.弱類型:JavaScript 指令碼語言像其他程式語言一樣,其變數都有資料類型,具體資料類型將在下一節中介紹。進階程式語言如C++、Java 等為強型別語言,與此不同的是,JavaScript 指令碼語言是弱類型語言,在變數聲明時不需顯式地指定其資料類型,變數的資料類型將根據變數的具體內容推匯出來,且根據變數內容的改變而自動更改,而強型別語在變數聲明時必須顯式地指定其資料類型。變數聲明時不需顯式指定其資料類型既是 JavaScript 指令碼語言的優點也是缺點,優點是編寫指令碼代碼時不需要指明資料類型,使變數聲明過程簡單明了;缺點就是有可能造成因微妙的拼字不當而引起致命的錯誤。
4.基礎資料型別 (Elementary Data Type):在實現預定功能的程式碼中,一般需定義變數來儲存資料(作為初始值、中間值、最終值或函數參數等)。變數包含多種類型,JavaScript 指令碼語言支援的基礎資料型別 (Elementary Data Type)包括
Number 型、String 型、Boolean 型、Undefined 型、Null 型和Function 型,下面簡單介紹一下幾種資料類型:
4.1 Number 型:Number 型資料即為數值型資料,包括整數型和浮點型,整數型數制可以使用十進位、八進位以及十六進位標識,而浮點型為包含小數點的實數,且可用科學計數法來表示。一般來說,Number 型資料為不在括弧內的數字
4.2 Undefined 型:Undefined 型即為未定義類型,用於不存在或者沒有被賦初始值的變數或對象的屬性,如下列語句定義變數name 為Undefined 型:
var name;定義Undefined 型變數後,可在後續的指令碼代碼中對其進行賦值操作,從而自動獲得由其值決定的資料類型。
4.2 Null 型:Null 型資料表示空值,作用是表明資料空缺的值,一般在設定已存在的變數(或對象的屬性)為空白時較為常用。區分Undefined 型和Null 型資料比較麻煩,一般將Undefined 型和Null 型等同對待。
4.3 Function 型:Function 型表示函數,可以通過new 操作符和建構函式Function()來動態建立所需功能的函數,並為其添加函數體。例如:
var myFuntion = new Function()
{staments;};
JavaScript 指令碼語言除了支援上述六種基礎資料型別 (Elementary Data Type)外,也支援組合類別型,如數組Array和對象Object 等,下面介紹組合類別型。
四:組合類別型
1.Array 型:Array 型即為數組,數組是包含基本和組合資料的序列。在JavaScript 指令碼語言中,每一種資料類型對應一種對象,數組本質上即為Array 對象。考察如下定義:
var score = [56,34,23,76,45];
上述語句建立數組score,中括弧“[]”內的成員為數組元素。由於JavaScript 是弱類型語言,因此不要求目標數組中各元素的資料類型均相同,例如:var score = [56,34,”23”,76,”45”];
由於數組本質上為Array 對象,則可用運算子new 來建立新的數組,例如:var score=new Array(56,34,”23”,76,”45”);
訪問數組中特定元素可通過該元素的索引位置index 來實現,如下列語句聲明變數m 返回數組score 中第四個元素:
var m = score [3];
數組作為Array 對象,具有最重要的屬性length,用來儲存該數組的長度
2 Object 型:對象為可包含基本和組合資料的組合類別型,且對象的成員作為對象的屬性,對象的成員函數作為對象的方法。在JavaScript 指令碼語言中,可通過在對象後面加句點“.”並加上對象
屬性(或方法)的名稱來訪問對象的屬性(或方法),例如:
document.bgColor
document.write(“Welcome to JavaScript World!”);
五:運算子
1 賦值運算子:JavaScript 指令碼語言的賦值運算子包含“=”、“+=”、“-=”、“*=”、“/=”、“%=”、“&=”、“^=”等
運算子 舉例 簡要說明
= m=n 將運算子右邊變數的值賦給左邊變數
+= m+=n 將運算子兩側變數的值相加並將結果賦給左邊變數
-= m-=n 將運算子兩側變數的值相減並將結果賦給左邊變數
*= m*=n 將運算子兩側變數的值相乘並將結果賦給左邊變數
/= m/=n 將運算子兩側變數的值相除並將整除的結果賦給左邊變數
%= m%=n 將運算子兩側變數的值相除並將餘數賦給左邊變數
&= m&=n 將運算子兩側變數的值進行按位與操作並將結果賦值給左邊變數
^= m^=n 將運算子兩側變數的值進行按位或操作並將結果賦值給左邊變數
<<= m<<=n 將運算子左邊變數的值左移由右邊變數的值指定的位元,並將操作的結果賦予左邊變數
>>= m>>=n 將運算子左邊變數的值右移由右邊變數的值指定的位元,並將操作的結果賦予左邊變數
>>>= m>>>=n 將運算子左邊變數的值邏輯右移由右邊變數的值指定的位元,並將操作的結果賦給左邊變數
賦值運算子是編寫 JavaScript 指令碼代碼時最為常用的操作,讀者應熟練掌握各個運算子的功能,避免混淆其具體作用。
2 基本數學運算子:JavaScript 指令碼語言中基本的數學運算包括加、減、乘、除以及取餘等,其對應的數學
運算子分別為“+”、“-”、“*”、“/”和“%”
3.位元運算符:JavaScript 指令碼語言支援的基本位元運算符包括:“&”、“|”、“^”和“~”等。指令碼代碼執行位元運算時先將運算元轉換為位元,操作完成後將傳回值轉換為十進位
位元運算符 舉例 簡要說明
& 9&4 按位與,若兩資料對應位都是1,則該位為1,否則為0
^ 9^4 按位異或,若兩資料對應位相反,則該位為1,否則為0
| 9|4 按位或,若兩資料對應位都是0,則該位為0,否則為1
~ ~4 按位非,若資料對應位為0,則該位為1,否則為0
位元運算符在進行資料處理、邏輯判斷等方面使用較為廣泛,恰當應用位元運算符,可節省大量指令碼代碼。
3.自加和自減:自加運算子為“++”和自減運算子為“--”分別將運算元加1 或減1。值得注意的是,
自加和自減運算子放置在運算元的前面和後面含義不同。運算子寫在變數名前面,則傳回值
為自加或自減前的值;而寫在後面,則傳回值為自加或自減後的值。
4.比較子:JavaScript 指令碼語言中用於比較兩個資料的運算子稱為比較子,包括“= =”、“!=”、“>”、“<”、“<=”、“>=”等
5.邏輯運算子:JavaScript 指令碼語言的邏輯運算子包括“&&”、“||”和“!”等,用於兩個邏輯型資料之間的操作,傳回值的資料類型為布爾型
6.逗號運算子:編寫JavaScript 指令碼代碼時,可使用逗號“,”將多個語句連在一起,瀏覽器載入該代碼時,將其作為一個完整的語句來調用,但語句的傳回值是最右邊的語句。逗號“,”一般用於在函數定義和調用時分隔多個參數,
7.對象運算子:JavaScript 指令碼語言主要支援四種對象運算子,包括點號運算子、new 運算子、delete運算子以及()運算子等。對象包含屬性和方法,點號運算子用來訪問對象的屬性和方法。其用法是將對象名稱與對象的屬性(或方法)用點號隔開,例如:
var myColor=document.bgColor;
window.alert(msg);
當然,也可使用雙引號“[]”來訪問對象的屬性,改寫上述
語句:var myColor=document[" bgColor "];
new 運算子用來建立新的對象,例如建立一個新的數組對象,可以寫成:var exam = new Array (43,76,34 89,90);
new 運算子可以建立程式員自訂的對象,以可以建立JavaScript 內建對象的執行個體。
8.typeof 運算子:typeof 運算子用於表明運算元的資料類型,返回數實值型別為一個字串。在JavaScript指令碼語言中,其使用格式如下:
var myString=typeof(data);
六:javascript的迴圈控制結構:由於在javascript中if、if……else、while、do……while等語句與java中基本相識,所以在此就不在贅述
七:函數
JavaScript 指令碼語言允許開發人員通過編寫函數的方式組合一些可重複使用的指令碼代碼塊,增加了指令碼代碼的結構化和模組化。函數是通過參數介面進行資料傳遞,以實現特定的功能。
1 函數的基本組成
函數由函數定義和函數調用兩部分組成,應首先定義函數,然後再進行調用,以養成良好的編程習慣。函數的定義應使用關鍵字 function
,其文法規則如下:
function funcName ([parameters])
{statements;
[return 運算式;]}
除了自訂函數外,JavaScript 指令碼語言提供大量的內建函數,無需開發人員定義即可直接調用,例如window 對象的alert()方法即為JavaScript 指令碼語言支援的內建函數。函數定義過程結束後,可在文檔中任意位置調用該函數。引用目標函數時,只需在函數名後加上小括弧即可。若目標函數需引入參數,則需在小括弧內添加傳遞參數。如果函數有傳回值,可將最終結果賦值給一個自訂的變數並用關鍵字return 返回。
2 全域函數與局部函數:JavaScript 指令碼語言提供了很多全域(內建)函數,在指令碼編程過程中可直接調用,在此介紹四種簡單的全域函數:parseInt()、parseFloat()、escape()和unescape()。
parseInt()函數的作用是將字串轉換為整數,parseFloat()函數的作用是將字串轉換為浮點數;escape()函數的作用是將一些特殊字元轉換成ASCII 碼,而unescape()函數的作用是將ASCII 碼轉換成字元。
3.作為對象的函數:JavaScript 指令碼語言中所有的資料類型、數組等均可作為對象對待,函數也不例外。可以使用new 操作符和Function 對象的建構函式Function()來產生指定規則的函數,其基本語
法如下:
var funcName = new Function (arguments,statements;);
值得注意的是,上述的建構函式Function()首字母必須為大寫,同時函數的參數列表與作業碼之間使用逗號隔開。
注意:在定義函數對象時,參數列表可以為空白,也可有一個或多個參數,使用變數引用該函數時,應將函數執行所需要的參數傳遞給函數體。作為對象的函數最重要的性質即為它可以建立靜態變數,給函數增加執行個體屬性,使得函數在被調用之間也能發揮作用。作為對象的函數使用靜態變數後,可以用來儲存其啟動並執行環境參數如中間值等資料。
4.函數應用注意事項
最後介紹一下在使用函數過程中應特別予以注意的幾個問題,以協助讀者更好、更準確確地使用函數,並養成良好的編程習慣。具體表現在如下幾點:
定義函數的位置:如果函數代碼較為複雜,函數之間相互調用較多,應將所有函數的定義部分放在HTML 文檔的<head>和</head>標記對之間,既可保證所有的函數在調用之前均已定義,又可使開發人員後期的維護工作更為簡便;
��� 函數的命名:函數的命名原則與變數的命名原則相同,但盡量不要將函數和變數取同一個名字。如因實際情況需要將函數和變數定義相近的名字,也應給函數加上可以清楚辨認的字元(如首碼func 等)以示區別;
��� 函數傳回值:在函數定義代碼結束時,應使用return 語句返回,即使函數不需要返回任何值;
��� 變數的範圍:區分函數中使用的變數是全域變數還是局部變數,避免調用過程中出現難以檢查的錯誤;
��� 函數注釋:在編寫指令碼代碼時,應在適當的地方給代碼的特定行添加註釋語句,例如將函數的參數數量、資料類型、傳回值、功能等注釋清楚,既方便開發人員對程式的後期維護,也方便其他人閱讀和使用該函數,便於模組化編程;
��� 函數參數傳遞:由於 JavaScript 是弱類型語言,使用變數時並不檢查其資料類型,導致一個潛在的威脅,即開發人員調用函數時,傳遞給函數的參數數量或資料類型不滿足要求而導致錯誤的出現。在函數調用時,應仔細檢查傳遞給目標函數的參數變數的數量和資料類型。
其中第五點尤為值得特別關注,因由其導致的錯誤非常難於檢測。