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" }; // ユーザーが見つかった場合
}

nullundefined の違い

編集

null は「値が存在しないこと」を明示的に示すのに対し、undefined は「値がまだ設定されていないこと」を示します。

let value;       // 変数を宣言したが初期化されていない
console.log(value); // undefined

value = null;    // 値が存在しないことを明示的に設定
console.log(value); // null

null の比較

編集

null は、非厳密等価演算子(`==`)で undefined と等しいと評価されますが、厳密等価演算子(`===`)では異なると評価されます。

console.log(null == undefined); // true
console.log(null === undefined); // false

typeof null の結果は "object" ですが、これはJavaScriptにおける歴史的な設計ミスです。この結果は変更されることなく維持されています。

console.log(typeof null); // "object"

注意点

編集
  • null はプロトタイプやメソッドを持たないため、プロパティアクセスやメソッド呼び出しを行うとエラーになります。
let value = null;
console.log(value.toString()); // TypeError: Cannot read properties of null

まとめ

編集
  • null は、意図的に値が存在しないことを示すために使用されます。
  • nullundefined は異なる意味を持つ値です。
  • typeof null の結果は "object" ですが、これは誤解を招く場合があります。
  • 変数の初期化や空の値の明示的な設定に使用されます。