🔖

JavaScriptにおける undefined と null の違いを整理する

に公開

はじめに

JavaScriptを学び始めたときに、undefinednull の違いでつまずいたことはありませんか?

私自身、最初はどちらも「値がない」状態のように見えて、
どう使い分けるべきなのか混乱していました。

本記事では、undefinednull の違いを、
基本の考え方から実務での使い分けまで整理してみます。

1. undefined とは

undefined は、「まだ値が代入されていない」ことを表す値です。

例:変数を宣言しただけの状態

let name;
console.log(name); // undefined

変数 name は宣言されていますが、値が代入されていないため undefined になります。

2. null とは

null は、値がないことを明示的に示すための値です。

例:値がないことを明示する

let user = null;
console.log(user); // null

このように、まだ値が設定されていないことを表現したいときに使います。

3. undefinednull の使われ方の違い

比較項目 undefined null
意味 値がまだ「定義されていない」 値が「意図的に存在しない」
誰が設定する? JavaScript(自動でつける) 開発者(手動で代入する)
typeofの結果 "undefined" "object"(※初心者を混乱させるポイント)
初期状態 変数を宣言しただけで代入していないとき 明示的に「空」として代入したとき

4. ===== の違いに注意

JavaScriptには ==(柔軟な等価比較)と ===(厳密な等価比較)があります。

✅ 柔軟に比較した場合

console.log(null == undefined); // true

→ 「どちらも“ない”扱い」として一致してしまいます。

✅ 厳密に比較した場合

console.log(null === undefined); // false

→ 型が異なるので一致しません。
通常は ===(厳密等価)を使うのが推奨されます

5. 実務での使い分けのイメージ

状況 使う値
値がまだ代入されていない初期状態 undefined(自動的にそうなる)
データが「本当にない」ことを明示したい null
APIで「データが未設定」と返したいとき null を返すのが一般的

おわりに

undefinednull は、どちらも「値がない」状態を表しますが、
意味や使い方は大きく異なります。

  • undefined は JavaScript 側の「未定義」
  • null は 開発者の「意図的な空」

それぞれの違いを理解しておくと、条件分岐やデータ処理のバグを防ぎやすくなります。

本記事が理解の一助になれば幸いです。

Discussion