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 判定を行う場合は、 同値演算子(===)を使うことで正しく判定できます。