共用方式為


Undefined 值

更新:2007 年 11 月

在 JScript 中宣告變數時,可以不指派變數值。加註型別變數,會假設該型別的預設值。例如,實值型別的預設值是零,String 資料型別的預設值是空字串。不過,變數如果沒有指定資料型別,初始值是 undefined,資料型別是 undefined。同樣的,程式碼存取的 expando 物件屬性或陣列元素如果不存在,會傳回 undefined 值。

使用 Undefined 值

若要知道變數或物件屬性是否存在,請比較關鍵字 undefined (只適用於已宣告的變數或屬性),或是檢查它的型別是否為 "undefined" (也適用於未宣告的變數或屬性)。在下列程式碼範例中,請假設程式設計人員正在嘗試測試變數 x 是否已被宣告:

// One method to test if an identifier (x) is undefined.
// This will always work, even if x has not been declared.
if (typeof(x) == "undefined"){
   // Do something.
}
// Another method to test if an identifier (x) is undefined.
// This gives a compile-time error if x is not declared.
if (x == undefined){
   // Do something.
}

另一個檢查是否未定義變數或物件屬性的方法是,拿此值與 null 進行比較。含 null 的變數不包括「值」或「物件」,換句話說,它不會保留有效的數字、字串、布林值、陣列或物件。您可以藉由指定 null 值來清除變數的內容 (不需刪除變數)。請注意,使用等號比較 (==) 運算子比較 undefined 值和 null 的結果是相等。

注意事項:

在 JScript 中使用等號比較運算子比較 null 和 0 的結果是不相等。這個行為不同於 C 和 C++ 等的其他語言。

這個範例測試 obj 物件有沒有 prop 屬性。

// A third method to test if an identifier (obj.prop) is undefined.
if (obj.prop == null){
   // Do something.
}

如果下列條件為真,則這個比較結果是 true

  • 如果 obj.prop 屬性包含 null 值。

  • 如果 obj.prop 屬性不存在。

還有另一個方法可以檢查物件屬性是否存在。如果提供的物件中有指定的屬性,in 運算子會傳回 true。例如,如果 obj 物件中有 prop 屬性,下列程式碼測試會為 true

if ("prop" in someObject)
// someObject has the property 'prop'

若要移除物件中的屬性,請使用 delete 運算子。

請參閱

參考

null 常值

undefined 屬性

in 運算子

delete 運算子

其他資源

JScript 變數和常數

JScript 中的資料

JScript 資料型別

資料型別 (JScript)