JScript 的變量
任何編程語言中,用一塊數(shù)據(jù)量化一個(gè)概念。
How old am I?
在 Jscript 中,變量是給概念的名稱;它代表了給出瞬間的值。當(dāng)使用該變量時(shí),實(shí)際是用的它所代表的數(shù)據(jù)。給出示例:
NumberOfDaysLeft = EndDate – TodaysDate;
機(jī)械的理解是使用變量來存儲、得到并操作腳本中出現(xiàn)的所有的不同值。創(chuàng)建有意義的變量名稱;便于別人理解腳本。
變量聲明
變量在腳本中的第一次出現(xiàn)是在聲明中。變量在第一次用到時(shí)就設(shè)置于內(nèi)存中,便于后來在腳本中引用。使用變量之前先進(jìn)行聲明。可以使用 var 關(guān)鍵字來進(jìn)行變量聲明。
var count; // 單個(gè)聲明。
var count, amount, level; // 用單個(gè) var 關(guān)鍵字聲明的多個(gè)聲明。
var count = 0, amount = 100; // 一條語句中的變量聲明和初始化。
如果在 var 語句中沒有初始化變量,變量自動取 JScript 值 undefined。盡管并不安全,但聲明語句中忽略 var 關(guān)鍵字是合法的 JScript 語法。這時(shí),JScript 解釋器給予變量全局范圍的可見度。當(dāng)在過程級中聲明一個(gè)變量時(shí),它不能用于全局范圍;這種情況下,變量聲明必須用 var 關(guān)鍵字。
變量命名
變量名稱是一個(gè)標(biāo)識符。Jscript 中,用標(biāo)識符來:
命名變量,
命名函數(shù),
給出循環(huán)的標(biāo)簽。
JScript 是一種區(qū)分大小寫的語言。因此變量名稱 myCounter 和變量名稱 mYCounter 是不一樣的。變量的名稱可以是任意長度。創(chuàng)建合法的變量名稱應(yīng)遵循如下規(guī)則:
第一個(gè)字符必須是一個(gè) ASCII 字母(大小寫均可),或一個(gè)下劃線(_)。注意第一個(gè)字符不能是數(shù)字。
后續(xù)的字符必須是字母、數(shù)字或下劃線。
變量名稱一定不能是 保留字。
下面給出合法變量名稱的一些示例:
_pagecount
Part9
Number_Items
下面給出無效變量名稱的一些示例:
99Balloons // 不能以數(shù)字開頭。
Smith&Wesson // “與”符號(&)字符用于變量名稱是無效的。
當(dāng)要聲明一個(gè)變量并進(jìn)行初始化,但又不想指定任何特殊值,可以賦值為 JScript 值 null。下面給出示例。
var bestAge = null;
var muchTooOld = 3 * bestAge; // muchTooOld 的值為 0。
如果聲明了一個(gè)變量但沒有對其賦值,該變量存在,其值為Jscript 值 undefined。下面給出示例。
var currentCount;
var finalCount = 1 * currentCount; // finalCount 的值為 NaN,因?yàn)?currentCount 為 undefined。
注意在 JScript 中 null 和 undefined 的主要區(qū)別是 null 的操作象數(shù)字 0,而 undefined 的操作象特殊值NaN (不是一個(gè)數(shù)字)。對 null 值和 undefined 值作比較總是相等的。
可以不用 var 關(guān)鍵字聲明變量,并賦值。這就是隱式聲明。
noStringAtAll = ""; // 隱式聲明變量 noStringAtAll。
不能使用未經(jīng)過聲明的變量。
var volume = length * width; // 錯誤 — length 和 width 并不存在。
強(qiáng)制轉(zhuǎn)換
表達(dá)式中操作項(xiàng)的數(shù)據(jù)類型相同時(shí) JScript 解釋器才能對其求值。如果表達(dá)式不經(jīng)過強(qiáng)制轉(zhuǎn)換就試圖對兩個(gè)不同的數(shù)據(jù)類型(如一個(gè)為數(shù)字,另一個(gè)為字符串)執(zhí)行運(yùn)算,將產(chǎn)生錯誤結(jié)果。但在 Jscript 中情況就不同了。
JScript 是一種自由類型的語言。它的變量沒有預(yù)定類型(相對于強(qiáng)類型語言,如 C++)。相反,JScript 變量的類型相應(yīng)于他們包含的值的類型。這種操作的好處是能將值作為另一類型處理。
在 Jscript 中,可以對不同類型的值執(zhí)行運(yùn)算,不必?fù)?dān)心 JScript 解釋器產(chǎn)生異常。相反,JScript 解釋器自動將數(shù)據(jù)類型之一改變(強(qiáng)制轉(zhuǎn)換)為另一種數(shù)據(jù)類型,然后執(zhí)行運(yùn)算。例如:
運(yùn)算 結(jié)果
數(shù)值與字符串相加 將數(shù)值強(qiáng)制轉(zhuǎn)換為字符串。
布爾值與字符串相加 將布爾值強(qiáng)制轉(zhuǎn)換為字符串。
數(shù)值與布爾值相加 將布爾值強(qiáng)制轉(zhuǎn)換為數(shù)值。
考慮下面的示例。
var x = 2000; // 一個(gè)數(shù)字。
var y = "Hello"; // 一個(gè)字符串。
x = x + y; // 將數(shù)字強(qiáng)制轉(zhuǎn)換為字符串。
document.write(x); // 輸出 2000Hello。
要想顯式地將字符串轉(zhuǎn)換為整數(shù),使用 parseInt 方法。要想顯式地將字符串轉(zhuǎn)換為數(shù)字,使用 parseFloat 方法。請注意,比較大小時(shí)字符串自動轉(zhuǎn)換為相等的數(shù)字,但加法(連接)運(yùn)算時(shí)保留為字符串。
更多信息請查看IT技術(shù)專欄