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