🔖
JavaScriptにおける undefined と null の違いを整理する
はじめに
JavaScriptを学び始めたときに、undefined
と null
の違いでつまずいたことはありませんか?
私自身、最初はどちらも「値がない」状態のように見えて、
どう使い分けるべきなのか混乱していました。
本記事では、undefined
と null
の違いを、
基本の考え方から実務での使い分けまで整理してみます。
undefined
とは
1. undefined
は、「まだ値が代入されていない」ことを表す値です。
例:変数を宣言しただけの状態
let name;
console.log(name); // undefined
変数 name
は宣言されていますが、値が代入されていないため undefined
になります。
null
とは
2. null
は、値がないことを明示的に示すための値です。
例:値がないことを明示する
let user = null;
console.log(user); // null
このように、まだ値が設定されていないことを表現したいときに使います。
undefined
と null
の使われ方の違い
3. 比較項目 | undefined |
null |
---|---|---|
意味 | 値がまだ「定義されていない」 | 値が「意図的に存在しない」 |
誰が設定する? | JavaScript(自動でつける) | 開発者(手動で代入する) |
typeofの結果 | "undefined" |
"object" (※初心者を混乱させるポイント) |
初期状態 | 変数を宣言しただけで代入していないとき | 明示的に「空」として代入したとき |
==
と ===
の違いに注意
4. JavaScriptには ==
(柔軟な等価比較)と ===
(厳密な等価比較)があります。
✅ 柔軟に比較した場合
console.log(null == undefined); // true
→ 「どちらも“ない”扱い」として一致してしまいます。
✅ 厳密に比較した場合
console.log(null === undefined); // false
→ 型が異なるので一致しません。
通常は ===
(厳密等価)を使うのが推奨されます。
5. 実務での使い分けのイメージ
状況 | 使う値 |
---|---|
値がまだ代入されていない初期状態 |
undefined (自動的にそうなる) |
データが「本当にない」ことを明示したい | null |
APIで「データが未設定」と返したいとき |
null を返すのが一般的 |
おわりに
undefined
と null
は、どちらも「値がない」状態を表しますが、
意味や使い方は大きく異なります。
-
undefined
は JavaScript 側の「未定義」 -
null
は 開発者の「意図的な空」
それぞれの違いを理解しておくと、条件分岐やデータ処理のバグを防ぎやすくなります。
本記事が理解の一助になれば幸いです。
Discussion