JavaScript/typeof null
表示
typeof null
[編集]typeof null
は、JavaScriptにおいて特殊なケースで、null
に対して typeof
演算子を使用した場合、"object"
という値を返します。この挙動は言語仕様に由来するもので、しばしば混乱を招くポイントの一つです。
特徴
[編集]null
は、JavaScriptにおけるプリミティブ型で、明示的に「値がない」状態を表します。- 通常、
typeof
演算子を使用すると値の型が返されますが、typeof null
の結果は"object"
になります。 - この挙動は、JavaScriptの設計上の誤り(バグ)として知られていますが、互換性維持のために修正されていません。
console.log(typeof null); // "object"
歴史的背景
[編集]typeof null
が "object"
を返す理由は、JavaScriptの初期設計に起因します。null
の内部的な表現は、低レベルのデータ構造で「ゼロ値のポインタ」として扱われており、これが object
型として分類される原因です。
実際の型チェック
[編集]null
が本質的にはプリミティブ型であることを考慮すると、値が null
かどうかを正確にチェックするには、"==="
演算子を使用する必要があります。
let value = null; console.log(typeof value); // "object" console.log(value === null); // true
null と object の違い
[編集]let obj = {}; let value = null; console.log(typeof obj); // "object" console.log(typeof value); // "object"(ただし、これは <code>[[JavaScript/null|null]]</code>)
typeof null に関する注意点
[編集]typeof null
が"object"
を返す挙動を考慮し、型チェックを行う際には以下の方法を採用することが推奨されます:- 厳密比較を使用する: `value === null`
- 型ガードを追加する: 例えば、`value !== null && typeof value === "object"`
function isObject(value) { return value !== null && typeof value === "object"; } console.log(isObject(null)); // false console.log(isObject({})); // true
まとめ
[編集]typeof null
が"object"
を返すのは、JavaScriptの設計上の歴史的な理由によるものです。null
はプリミティブ型であり、値がないことを明示的に示します。- 型チェックを行う際には、
"==="
を使用するか、明確な条件分岐を採用することが重要です。