JavaScript – if文で「undefined」かどうかを判定する方法

JavaScript の if 文で、変数の値が「undefined」かどうかを判断する方法を紹介します。

undefined 判定を行う場合は等値演算子(==)ではなく、同値演算子(===)を使うことをおすすめします。

理由は変数が「null」の場合に、等値演算子(==)を使うと正しく判定されないからです。

ここでは同値演算子(===)を使う場合と、 等値演算子(==)を使って正しく判定されない場合を紹介します。

まずは同値演算子(===)を使う場合を具体的に見てみます。

同値演算子(===)を使った「undefined」の判定方法

次のサンプルコードは、 まず変数を「undefined」の状態にして、 その後同値演算子(===)を使って「undefined」かどうかを判定しています。


var s;  // 宣言のみなので「undefined」の状態

console.log("s = " + s);

if (s === undefined){
	console.log("判定結果: undefinedです。");
} else {
	console.log("判定結果: undefinedではありません。");
}


// 実行結果
s = undefined
判定結果: undefinedです。

正しく「undefined」と判定されています。

等値演算子(==)を使って、「null」が「undefined」と判定されてしまうケース

次のサンプルコードでは、変数にnullを代入しています。

ですが、「undefined」 判定では「undefined」と判断されています。

「undefined」と「null」を区別したい場合は、これでは困ります。


var s = null;  // null

console.log("s = " + s);

if (s == undefined){
	console.log("判定結果: undefinedです。");
} else {
	console.log("判定結果: undefinedではありません。");
}


// 実行結果
s = null
判定結果: undefinedです。

同値演算子(===)を使うと、正しく判定される

先程と同じように、変数は「null」ですが、 演算子を同値演算子(===)に替えてみます。

そうすると「判定結果: undefinedではありません。」と表示されていますから、 「null」と「undefined」が区別されているのがわかります。


var s = null;

console.log("s = " + s);

if (s === undefined){
	console.log("判定結果: undefinedです。");
} else {
	console.log("判定結果: undefinedではありません。");
}


// 実行結果
s = null  test.js:14:1
判定結果: undefinedではありません。

このように、if 文で「undefined」判定を行う場合は、 同値演算子(===)を使うことで正しく判定できます。