JavaScript/null
null
編集null は、JavaScriptにおけるプリミティブ型の一つで、意図的に値が「存在しない」または「空である」ことを示す特殊な値です。null
は明示的に設定された値であり、未定義の値を示す undefined
とは異なります。
特徴
編集null
は、厳密にはオブジェクト型ではなく、プリミティブ型の一種です。typeof null
の結果は"object"
ですが、これはJavaScriptの歴史的な設計上のバグによるものです。- 明示的に値が「ない」ことを示す際に使用されます。
let value = null; // 値が空であることを明示的に設定
console.log(value); // null
主な用途
編集- 初期化: 変数が後でオブジェクトになることを期待している場合に、初期値として
null
を設定します。
let user = null; // ユーザー情報がまだ設定されていないことを示す
- 明示的な空の値: 関数が有効な値を返せない場合に
null
を返すことがあります。
function findUser(id) {
if (id !== 1) {
return null; // ユーザーが見つからない場合
}
return { id: 1, name: "John" }; // ユーザーが見つかった場合
}
null
は「値が存在しないこと」を明示的に示すのに対し、undefined
は「値がまだ設定されていないこと」を示します。
let value; // 変数を宣言したが初期化されていない
console.log(value); // undefined
value = null; // 値が存在しないことを明示的に設定
console.log(value); // null
null
は、非厳密等価演算子(`==`)で undefined
と等しいと評価されますが、厳密等価演算子(`===`)では異なると評価されます。
console.log(null == undefined); // true
console.log(null === undefined); // false
typeof null
の結果
編集
typeof null
の結果は "object"
ですが、これはJavaScriptにおける歴史的な設計ミスです。この結果は変更されることなく維持されています。
console.log(typeof null); // "object"
注意点
編集null
はプロトタイプやメソッドを持たないため、プロパティアクセスやメソッド呼び出しを行うとエラーになります。
let value = null;
console.log(value.toString()); // TypeError: Cannot read properties of null
まとめ
編集null
は、意図的に値が存在しないことを示すために使用されます。null
とundefined
は異なる意味を持つ値です。typeof null
の結果は"object"
ですが、これは誤解を招く場合があります。- 変数の初期化や空の値の明示的な設定に使用されます。