JS

null・undefined の違い

初級

読み方:ヌル・アンデファインド のちがい|英語:null vs undefined

undefinedは「値がまだ入っていない」状態、nullは「意図的に空にした」状態。

やさしい説明

undefined は「まだ値が入っていない」状態。null は「意図的に空にした」状態です。どちらも「値がない」ことを表しますが意味が違います。

手紙に例えると、undefined は「届いていない手紙」、null は「届いたけど白紙の手紙」です。

変数を宣言しただけ(let x;)だと undefined。明示的に「空」にしたいときは null を代入します。

具体例・使い方

// undefined: 値が設定されていない
let x;
console.log(x); // undefined

// null: 意図的に「空」にした
let user = null; // 「ユーザーはまだいない」

// よくある場面
const obj = { name: "太郎" };
obj.email; // undefined(プロパティが存在しない)

// 両方チェックする便利な書き方
if (value == null) { ... } // null と undefined の両方にマッチ

いつ使う?

「まだデータがない」状態を表すとき(APIレスポンス待ち等)に null を使います。undefined は自分で代入するのではなく、「まだ値が入っていない」ことを示す自然な状態です。

間違いやすいポイント

❌ typeof null が "object" を返す

typeof null      // "object"(歴史的バグ!)
typeof undefined // "undefined"

// null チェックは === null を使う
if (value === null) { ... }

よくある疑問

Q: どちらを使えばいい?

A: 「空」を明示したいときはnullを使います。undefinedは自分で代入せず、JavaScriptが自動で設定するものです。

Q: null == undefinedはtrue?

A: はい。==ではtrueですが、===ではfalseです。型が違うためです。

関連用語

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A