JavaScript の if 文で「オブジェクト」や 「オブジェクトのプロパティ」が存在するかどうかをチェックする方法を紹介します。
未定義「undefined」かどうかをtypeof 演算子を使ってチェックします。
存在していない(宣言していない)オブジェクトを参照するとエラーとなる
そもそも存在していない(宣言していない undefinedの)オブジェクトを参照しようとすると、 次のようにエラーとなります。
下のコードは、存在していない(宣言していない undefinedの)オブジェクト「obj」の 存在チェックをしようとしてエラーとなる例です。
if (!!obj){
console.log("存在します。");
}else {
console.log("存在しません。");
}
// 実行結果
ReferenceError: obj is not defined
「obj」が存在する場合はいいのですが、
存在しない場合はエラーとなるので、
これではチェック機能になりません。
typeof 演算子を使う
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 演算子を使うことで実現できます。