undefined

編集

undefined は、JavaScriptにおけるプリミティブ型の一つで、変数が未定義の状態や、値が設定されていないことを示します。undefined はグローバルスコープで定義された特殊な値であり、多くの場合において「何も設定されていない」状態を示します。

特徴

編集
  • undefined は、未初期化の変数や、存在しないオブジェクトのプロパティにアクセスしたときに返される値です。
  • JavaScriptのグローバルスコープには undefined という名前の定数が存在します。
  • 明示的に設定することもできますが、通常は未定義の状態を表すために自動的に設定されます。
let value; // 変数を宣言するが初期化しない
console.log(value); // undefined

主な用途

編集
  • 未初期化の変数: 変数が宣言されただけで値が設定されていない場合、自動的に undefined が割り当てられます。
    let value; // 初期化していない
    console.log(value); // undefined
    
  • 存在しないプロパティ: オブジェクト内の存在しないプロパティにアクセスすると undefined が返されます。
    let obj = {};
    console.log(obj.property); // undefined
    
  • 戻り値がない関数: 関数が明示的に値を返さない場合、その戻り値は undefined になります。
    function noReturn() {}
    console.log(noReturn()); // undefined
    

undefinednull の違い

編集
  • undefined は、「まだ値が割り当てられていない状態」を表します。
  • null は、「意図的に値が存在しない状態」を表します。
let value1;         // 初期化されていない
let value2 = null;  // 値が存在しないことを明示的に設定

console.log(value1); // undefined
console.log(value2); // null

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

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

安全な undefined チェック

編集

グローバルの undefined は再定義可能であるため、値が undefined かどうかをチェックする際には、typeof 演算子の使用が推奨されます。

let value;
console.log(typeof value === "undefined"); // true

注意点

編集
  • 変数に undefined を明示的に割り当てることは避けるべきです。null を使用して「意図的に値が空であること」を示す方が適切です。
let value = undefined; // 非推奨
let value = null;      // 推奨
  • undefined のチェックには、== よりも === を使用することで、より正確な比較が可能です。

まとめ

編集
  • undefined は、変数が未定義であることや、値が設定されていないことを示します。
  • null とは異なり、undefined は自動的に設定されることが一般的です。
  • 安全なチェックのためには、typeof 演算子を使用することが推奨されます。