【ぬるとあんでふぁいんど】
null と undefined とは?
💡 「まだ届いてない郵便受け」と「空にした郵便受け」
📌 このページのポイント
なんで「値がない」を表すものが2つもあるの?
JavaScriptの設計上の歴史的な事情。undefined は「まだ何も入れてないよ」というシステム側のデフォルト値、null は「ここには意図的に何も入っていません」というプログラマの意思表示。使い分けを意識するとコードが読みやすくなる。
typeof null が "object" になるのはなぜ?
これはJavaScriptの初期実装のバグが仕様としてそのまま残ったもの。本来は "null" を返すべきだった。互換性のために修正されていない。null かどうか調べるには value === null と厳密比較するのが安全。
おもしろい!null チェックってどうやるの?
value === null や value === undefined で個別にチェックできる。両方まとめてチェックしたいなら value == null とすると null と undefined の両方にマッチする。TypeScriptならオプショナルチェーン(?.)でさらに安全に書ける。
TypeScriptだとnullとundefinedはどう扱うの?
TypeScriptのstrictNullChecksを有効にすると、null/undefinedの可能性がある変数にアクセスするときにコンパイルエラーが出るようになるんだ。「string | null」のように型で明示的に宣言する必要がある。これでnull参照のバグが激減するよ。
他の言語だとnullってどう扱われてるの?
まとめ:ざっくりこれだけ覚えればOK!
null と undefined って出てきたら「どちらも値がない状態だけど、意図的かどうかが違う」と思えばだいたいOK!
📖 おまけ:英語の意味
「null / undefined」 = 無効 / 未定義
💬 null はラテン語の「nullus(何もない)」、undefined は「定義されていない」という英語そのまま