JavaScript - if文でオブジェクトが存在するかどうかを確認する方法

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 演算子を使うことで実現できます。