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」かどうかを確認することで実現できます。