undefined 値
JScript では、値を代入せずに変数を宣言できます。 型の注釈を指定した変数の値は、指定した型の既定値となります。 たとえば、数値型の既定値は 0 で、String 型の既定値は空の文字列です。 ただし、データ型を指定していない変数の初期値は undefined になり、データ型は undefined になります。 同様に、存在しない機能拡張オブジェクト プロパティや配列要素にアクセスするコードは、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.
}
変数またはオブジェクト プロパティが undefined かどうかを確認するには、値を null と比較する方法もあります。 null を含む変数は、"値がない" か "オブジェクトがない" という状態を示します。 つまり、このような変数には有効な数値、文字列、Boolean 値、配列、またはオブジェクトは含まれません。 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 を返します。 次のコードでは、プロパティ prop がオブジェクト obj に存在している場合に true を返します。
if ("prop" in someObject)
// someObject has the property 'prop'
オブジェクトからプロパティを削除するには、delete 演算子を使用します。