JavaScript: if文とtypeof演算子でオブジェクトの存在を確認する
JavaScript の if 文で「オブジェクト」や 「オブジェクトのプロパティ」が存在するかどうかをチェックする方法を紹介します。
未定義「undefined」かどうかをtypeof 演算子を使ってチェックします。
存在していない(宣言していない)オブジェクトを参照するとエラーになる
そもそも存在していない(宣言していない undefinedの)オブジェクトを参照しようとすると、 次のようにエラーとなります。
下のコードは、存在していない(宣言していない undefinedの)オブジェクト「obj」の 存在チェックを行ってエラーとなる例です。
if (!!obj){
console.log("存在します。");
}else {
console.log("存在しません。");
}
// 実行結果
ReferenceError: obj is not defined
「obj」が存在する場合は良いのですが、
存在しない場合はエラーとなるので、
これではチェック機能になりません。
typeof 演算子でオブジェクトの存在を確認
typeof演算子は存在しないオブジェクトを指定すると、 「undefined」を返します。
次のようにif文とtypeof 演算子を使うとエラーが発生することなく、、 オブジェクトの存在をチェックできます。
if (typeof obj === "undefined"){
console.log("存在しません。");
} else {
console.log("存在します。");
}
// 実行結果
存在しません。
念のために、存在する場合も機能するか確認してみます。
var obj = {};
if (typeof obj === "undefined"){
console.log("存在しません。");
} else {
console.log("存在します。");
}
// 実行結果
存在します。
このように、オブジェクトの存在(undefined かどうか)をチェックする場合は、 typeof 演算子を使うとできます。
オブジェクトのプロパティの存在確認
「オブジェクトのプロパティ」が存在するかを調べたい場合も、 同じように typeof 演算子が使えます。
下のコードは、存在しないプロパティを if 文で判定していいます。
var obj = {name: "Tanaka"};
if (typeof obj.age === "undefined"){
console.log("存在しません。");
} else {
console.log("存在します。");
}
// 実行結果
存在しません。
プロパティが存在する場合も確認してみます。
var obj = {name: "Tanaka"};
if (typeof obj.name === "undefined"){
console.log("存在しません。");
} else {
console.log("存在します。");
}
// 実行結果
存在します。
まとめ
このように、「オブジェクト」や 「オブジェクトのプロパティ」が存在しているかを判断したい場合は、 if 文中に typeof 演算子を使って、 「undefined」かどうかを確認することで実現できます。