JavaScript - if文でnullかどうかを判定する方法

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

null 判定を行う場合は同値演算子(===)を使うことをおすすめします。

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

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

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

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

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


var s = null;

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

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


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

正しく判定されています。

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

次のサンプルコードでは、変数は宣言だけで値を格納していません。 ですから変数の値は「undefined」です。

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

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


var s;

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

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


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

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

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

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


var s;

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

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


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

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