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です。型が違うためです。
関連用語
📖 関連レッスン
レッスンを見る →