JavaScript における undefined と null の違い
基本的な意味
undefined
「値が定義されていない」状態。変数を宣言したが、まだ値を代入していないときに自動的に設定される。JavaScript の内部で「何も代入されていない」という初期状態を示す。
null
「値が存在しない」ことを意図的に表す。開発者が「ここには何もない」と明示的に代入するために使う。オブジェクトが存在しない場合などにも使われる。
| 型 | undefined は undefined 型、null は object 型(歴史的仕様による誤りだがそのまま) |
| 代入 | undefined は通常自動で設定され、開発者が代入することはまれ |
| 意図 | null は「意図的な空」、undefined は「まだ何も設定されていない」 |
| 等価比較 | null == undefined は true、だが厳密比較(===)では false |
| JSON | JSON.stringify(undefined) はキーごと削除されるが、JSON.stringify(null) は "null" として残る |
例
let a
console.log(a) // undefined(まだ代入されていない)
let b = null
console.log(b) // null(意図的に空を代入)
console.log(a == b) // true(ゆるい等価)
console.log(a === b) // false(型が異なる)