JavaScriptの条件式におけるnull・undefined判定のコツ!初心者でもわかる判定方法ガイド
生徒
「先生、JavaScriptで変数がnullやundefinedかどうかを判定したいんですが、どうやってチェックすればいいですか?」
先生
「いい質問ですね。nullとundefinedは似ているけど少し違う値で、それぞれを判定するコツがあります。順番に説明しますね。」
生徒
「そもそもnullとundefinedって何が違うんですか?」
先生
「まずはそこから説明しますね!」
1. nullとundefinedの違いとは?
nullは「値が意図的に存在しない」ことを示します。プログラマーが「ここは空です」と明示的にセットする値です。
undefinedは「値がまだ設定されていない」状態を示します。変数を宣言したけど値を入れていないときに自動的にこの値になります。
簡単に言うと、nullは「空の箱」、undefinedは「まだ箱が用意されていない」状態です。
2. null・undefinedを判定する基本的な方法
JavaScriptでnullやundefinedかどうかを調べるには、===という「厳密な比較演算子」を使うのがおすすめです。
let value = null;
if (value === null) {
console.log("値はnullです。");
}
if (value === undefined) {
console.log("値はundefinedです。");
}
ここでは、valueがnullなら一つ目のメッセージが出て、undefinedなら二つ目のメッセージが出ます。
3. nullとundefinedの両方をまとめて判定するコツ
両方とも「値がない状態」なので、一緒に判定したい場合も多いです。そのときは==(ゆるい比較)を使う方法があります。
let value;
if (value == null) {
console.log("値はnullまたはundefinedです。");
}
== nullはnullかundefinedのどちらかの場合に真になります。ただし、==は他のケースで予期せぬ動きをすることがあるので注意が必要です。
4. if文の条件でnull・undefinedを判定する場合のポイント
JavaScriptのif文では、nullもundefinedも「false(偽)」として扱われます。つまり、次のように書くと両方をまとめてチェックできます。
let value;
if (!value) {
console.log("値が設定されていません。");
}
ただし、0や空文字 ""、falseも「false」と判定されるため、注意が必要です。もし「値が空かどうか」も区別したいときは別のチェックが必要になります。
5. typeof演算子を使ったundefined判定の方法
typeof演算子は変数の「型」を調べるためのものです。宣言されていない変数を調べるときにも安全に使えます。
if (typeof someVar === "undefined") {
console.log("someVarはundefinedです。");
}
変数が宣言されていない状態で値を調べるとエラーになりますが、typeofはエラーにならず安全に調べられます。
6. null・undefinedの違いをはっきりさせる実例
例えば、ユーザーの入力がまだない場合にnullを使い、変数を宣言したけど値をまだ入れていない場合はundefinedになります。
// ユーザーの入力がまだない
let userInput = null;
// 変数宣言だけした状態
let temp;
console.log(userInput); // null
console.log(temp); // undefined
7. null・undefined判定のコツまとめ
nullとundefinedは似ているが用途や意味が違うので使い分ける。===を使って厳密に判定するのが安全。nullかundefinedのどちらかをまとめて判定したいなら== nullを使う。if(!value)は簡単にまとめてチェックできるが、0や空文字も偽と判定される点に注意。typeof演算子は変数が未定義のときでも安全にundefinedをチェックできる。
8. 実践!null・undefined判定を使ったサンプルコード
最後に実際に判定を使ってみましょう。ユーザーの入力があるかどうかを判定してメッセージを表示する例です。
// ユーザーの名前入力
let userName = null;
if (userName === null) {
console.log("名前が設定されていません(null)。");
}
if (userName === undefined) {
console.log("名前が設定されていません(undefined)。");
}
if (userName == null) {
console.log("名前はnullまたはundefinedです。");
}
if (!userName) {
console.log("名前は空かnullかundefinedです。");
}
このように状況に合わせて判定方法を使い分けると、意図した条件分岐が書きやすくなります。