變數

由 2 位貢獻者:

 

變數

你會在你的應用程式中使用變數作為值的名稱。變數的名稱稱為識別子,並遵守以下規則。

JavaScript 識別子必須以字母、底線 (_)、美金符號 ($) 開頭;之後的字元就可以使用數字 (0-9)。因為 JavaScript 區分大小寫,字母包括從“A”到“Z”的字元(大寫)和從“a”到“z”的字元(小寫)。

從 JavaScript 1.5 開始,你可以在識別子中使用 ISO 8859-1 或 Unicode 字母,如 å、ü。你也可以使用表列於 Unicode 跳脫序列 頁面的 \uXXXX 的 Unicode 跳脫序列作為識別子。

合規則的名稱例子有 Number_hitstemp99_name

變數的宣告

你可以使用兩個方法宣告變數︰

  • 使用關鍵字 var。例如,var x = 42。這個語法也可用於宣告 局域和全域 變數。
  • 只需簡單的把值代給他。例如,x = 42。這只能宣告 全域變數,並引起嚴格的 JavaScript 警告。你不應該使用這個方法。

變數的求值

使用 var 語法宣告、且沒有初始值的變數,這個變數的值是 undefined

企圖存取未宣告的變數,將導致 ReferenceError 例外的拋出︰

var a;
print("The value of a is " + a); // 輸出 "a 的值是 undefined"
print("The value of b is " + b); // 拋出 ReferenceError 例外

你可以使用 undefined 確認變數是否有值。在下列代碼中,變數 input 尚未代入值,所以 if 語法求出的是 true

var input;
if(input === undefined){
  doThis();
} else {
  doThat();
}

在用於布林邏輯時,undefined 值會被視為 false。例如,下面的代碼會執行函數 myFunction,因為 myArray 元素尚未定義︰

var myArray = new Array();
if (!myArray[0]) myFunction();

當你對 null 變數求值時,null 值在用於數值時會被視為 0,而在用於布林邏輯時則視為 false。例如︰

var n = null;
print(n * 32); // 輸出 0

變數的作用域

當你在任何函數之外宣告變數時,這個變數就稱為全域變數,因為這個變數可以在整份文件中的任何代碼裡使用。當你在函數之內宣告變數時,這個變數就稱為局域變數,因為這個變數只能在函數之內使用。

JavaScript 的 區塊語法 並沒有作用域;在區塊之內的代碼不會是局域的。例如在下面的代碼中,如果 conditionfalse,結果會輸出 0,而不是拋出例外︰

if (condition) {
  var x = 5;
}
print(x ? x : 0);

另一個在 JavaScript 中關於變數的獨特行為是,你可以參考稍後才會宣告的變數,而不會引起例外︰

print(x === undefined); // 輸出 "true"
var x = 3;

全域變數

全域變數其實就是全域物件的屬性。在 Web 頁面中,全域物件是 window,所以你可以使用 window.variable 語法設定並存取全域變數。

因此,你可以從另一個視窗或框架,藉由指定視窗或框架的名稱,來存取宣告在視窗或框架裡的全域變數。例如,如果有一個稱為 phoneNumber 的變數是在 FRAMESET 文件中宣告,你可以從名為 parent.phoneNumber 的子框架參考這個變數。

參閱

JavaScript 的 Sharp 變數

Document Tags and Contributors

Contributors to this page: teoli, happysadman
最近更新: teoli,