このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【JavaScript入門】undefinedとnull

undefinedとnull

 JavaScript には、値が「存在しない」あるいは「まだ決まっていない」ときに使われる特別な値があります。それが undefinednull です。これらはエラーではなく、あくまでも「定義されていない状態」「無効な状態」を明示するための言語仕様です。ここでは、undefined と null の役割や使われる状況を簡単に紹介します。

1.undefined

 変数宣言を行ったものの、まだ値が代入されていない変数に入っているのが undefined です。また、JavaScript の配列やオブジェクト、関数などでも、存在しない要素を参照したときや引数が省略されたとき、戻り値が指定されなかったときなどに undefined が発生することがあります。

2.null

 null は「何も値がない」「無効である」という状態を意図的に示すために使われる特別な値です。例えば、関数で検索結果が見つからなかったときに明示的に null を返すケースなどがあります。JavaScript 内部では nullobject 型に分類されますが、これは言語仕様上の古い設計によるものであり、現在では「空の値」として扱われる特別な値という認識が一般的です。

3.テーブルで見る undefinednull

意味・使われる状況
undefinedundefined変数宣言後に値が未代入・オブジェクトの存在しないプロパティ・戻り値なし。
nullobject意図的に「値が無い」状態を表す・検索結果が見つからない場合など。

4.サンプルHTMLとJavaScript

 次のサンプルを「myUndefinedNullSample.html」として保存し、ブラウザで開いてコンソール(開発者ツール)を確認してください。

【myUndefinedNullSample.html】

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>myUndefinedNullSample.html</title>
</head>
<body>
  <h1>undefined と null の例</h1>
  <p>ブラウザの開発者ツールを開き、コンソールを確認してください。</p>

  <script>
    // 1. 変数宣言のみ → undefined
    let fruit;
    console.log("宣言だけした変数 fruit:", fruit);

    // 2. オブジェクトの存在しないプロパティ → undefined
    let obj = { name: "イチゴ" };
    console.log("オブジェクトに存在しないプロパティ:", obj.color); // undefined

    // 3. 関数の引数を省略 → undefined
    function showValue(value) {
      console.log("引数の値:", value);
    }
    showValue();

    // 4. 戻り値を指定しない → 関数の呼び出し結果が undefined
    function doNothing() {}
    let result = doNothing();
    console.log("戻り値を指定しない関数の結果:", result);

    // 5. null を代入
    let user = null;
    console.log("意図的に null を代入した変数 user:", user);

    // 6. 関数で検索結果が見つからなかった場合に null を返す例
    function findColor(colorName) {
      const colors = ["赤", "青", "黄"];
      if (colors.includes(colorName)) {
        return colorName;
      } else {
        return null; // 見つからなかった場合
      }
    }
    console.log("検索結果(存在する):", findColor("赤"));  // 赤
    console.log("検索結果(存在しない):", findColor("緑")); // null
  </script>
</body>
</html>

実行結果

デバッグコンソールの出力

宣言だけした変数 fruit: undefined
オブジェクトに存在しないプロパティ: undefined
引数の値: undefined
戻り値を指定しない関数の結果: undefined
意図的に null を代入した変数 user: null
検索結果(存在する): 赤
検索結果(存在しない): null

まとめ

  • undefined:値がまだ代入されていない、もしくは存在しないことを示すときに自動的に使われる。
  • null :あえて「何もない状態」を表すために使われる特別な値。

 このように、JavaScript では「未定義の状態(undefined)」と「意図的な空(null)」を区別して扱います。両者を正しく理解し使い分けることで、処理の意図をより明確に示せるようになります。