🔖
JavaScriptにおける undefined と null の違いを整理する
はじめに
JavaScriptを学び始めたときに、undefined と null の違いでつまずいたことはありませんか?
私自身、最初はどちらも「値がない」状態のように見えて、
どう使い分けるべきなのか混乱していました。
本記事では、undefined と null の違いを、
基本の考え方から実務での使い分けまで整理してみます。
1. undefined とは
undefined は、「まだ値が代入されていない」ことを表す値です。
例:変数を宣言しただけの状態
let name;
console.log(name); // undefined
変数 name は宣言されていますが、値が代入されていないため undefined になります。
2. null とは
null は、値がないことを明示的に示すための値です。
例:値がないことを明示する
let user = null;
console.log(user); // null
このように、まだ値が設定されていないことを表現したいときに使います。
3. undefined と null の使われ方の違い
| 比較項目 | 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