js|jscript|變數
任何程式設計語言中,用一塊資料量化一個概念。
How old are You?
在 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 值。下面給出樣本。
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 方法。請注意,比較大小時字串自動轉換為相等的數字,但加法(串連)運算時保留為字串。