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