カテゴリ: JavaScript 更新日: 2026/06/26

JavaScriptで理解するnullとundefinedの違い!初心者でもわかる型と挙動解説

JavaScriptのnullとundefinedの型と挙動の違いを解説
JavaScriptのnullとundefinedの型と挙動の違いを解説

先生と生徒の会話形式で理解しよう

生徒

「先生、JavaScriptでよく見かけるnullとundefinedって、どう違うんですか?」

先生

「nullは『値がない』ことを明示的に示すために使うもので、undefinedは『値がまだ設定されていない』ことを表します。」

生徒

「なるほど。でも型としても違うんですか?」

先生

「はい。typeof演算子で確認すると、nullはオブジェクト型、undefinedはundefined型になります。少しややこしいですね。」

生徒

「それって実際にコードで見せてもらえますか?」

先生

「もちろんです。それでは基本から順番に見ていきましょう。」

1. nullとundefinedの基本の意味

1. nullとundefinedの基本の意味
1. nullとundefinedの基本の意味

JavaScriptで値が存在しないことを表す方法として、nullundefinedがあります。nullは「意図的に値を空にする」場合に使い、undefinedは「まだ値が設定されていない」状態を表します。


let a;
console.log(a); // undefined

let b = null;
console.log(b); // null

2. 型の違いを確認しよう

2. 型の違いを確認しよう
2. 型の違いを確認しよう

typeof演算子を使うと、nullundefinedの型の違いが確認できます。


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

ここで注意したいのは、nullの型がオブジェクトとして認識されることです。これはJavaScriptの仕様によるもので、初心者には少し混乱しやすいポイントです。

3. 変数にnullを設定する場面

3. 変数にnullを設定する場面
3. 変数にnullを設定する場面

変数を後で値を入れることが決まっているけど、まだ初期値を設定しない場合にnullを使うことがあります。


let user = null; // ユーザー情報はまだ未設定
console.log(user); // null

// 後で値を設定
user = { name: "Taro", age: 20 };
console.log(user);

このようにnullを使うことで、「ここには値を入れる予定だけど、今は空」という意図をコード上で明示できます。

4. 変数がundefinedになるケース

4. 変数がundefinedになるケース
4. 変数がundefinedになるケース

変数を宣言しただけで値を設定していない場合、自動的にundefinedになります。また、関数の引数が渡されなかった場合もundefinedです。


let score;
console.log(score); // undefined

function greet(name) {
  console.log("Hello " + name);
}
greet(); // Hello undefined

5. nullとundefinedの比較

5. nullとundefinedの比較
5. nullとundefinedの比較

比較演算子を使うと、nullundefinedの違いが明確になります。


console.log(null == undefined);  // true(値としては同じ扱い)
console.log(null === undefined); // false(型が違うので厳密比較では異なる)

ポイントは、==だと値だけを比較するため同じと判断されますが、===だと型も比較するため違いがあることです。

6. nullとundefinedの活用方法

6. nullとundefinedの活用方法
6. nullとundefinedの活用方法

実務では、nullは「意図的に空の値」として使い、undefinedは「まだ値がない状態」をチェックする際に便利です。


function getUser(id) {
  if (id === 0) return null; // ユーザーが存在しない場合
  return { id: id, name: "Taro" };
}

let user = getUser(0);
if (user === null) {
  console.log("ユーザーが見つかりません");
}

また、オブジェクトのプロパティが存在しない場合はundefinedが返ることもあります。


let obj = { name: "Hanako" };
console.log(obj.age); // undefined

7. nullとundefinedを使った条件分岐

7. nullとundefinedを使った条件分岐
7. nullとundefinedを使った条件分岐

条件分岐でnullやundefinedを活用すると、値の有無に応じた処理が簡単に書けます。


let data = null;

if (data === null) {
  console.log("データは存在しません");
} else if (data === undefined) {
  console.log("データはまだ設定されていません");
} else {
  console.log("データ:", data);
}

このように使い分けることで、プログラムの意図を明確にし、バグを減らすことができます。

8. まとめの前に理解しておきたいポイント

8. まとめの前に理解しておきたいポイント
8. まとめの前に理解しておきたいポイント

JavaScriptのnullとundefinedの違いは、初心者にとってやや混乱しやすい部分ですが、基本は以下の通りです。

  • null: 意図的に値が空であることを示す
  • undefined: 値がまだ設定されていないことを示す
  • typeofで型を確認するとnullはobject、undefinedはundefined
  • 比較演算子で値の同等性を確認できる(==は値だけ、===は型も比較)

これらを理解しておくと、JavaScriptでの変数管理や条件分岐、オブジェクト操作が格段にわかりやすくなります。

まとめ

まとめ
まとめ

JavaScriptにおけるnullundefinedの違いは、初心者にとって非常に重要でありながら、つまずきやすいポイントです。nullは意図的に「値が存在しない」ことを示すために使用し、undefinedは「値がまだ設定されていない」状態を示します。型の違いとして、nullはオブジェクト型、undefinedはundefined型であることも押さえておくと、typeof演算子を用いた確認やデバッグがスムーズに行えます。

実務上は、nullを使うことで「後で値を入れる予定の空の変数」を明示でき、undefinedは変数の初期化忘れやオブジェクトの未定義プロパティを確認する際に便利です。さらに、比較演算子を正しく使い分けることで、値の等価性を意図通りに判定できます。==は値のみ、===は型も含めて厳密に比較するため、バグを防ぐことが可能です。

条件分岐においても、nullundefinedを活用することで、プログラムの意図を明確化し、データの有無に応じた処理を柔軟に書くことができます。例えば、ユーザー情報が存在しない場合や、入力が未設定の場合の処理など、現実のアプリケーション開発でも頻繁に使用されます。

総括すると、nullundefinedを正しく理解し、用途に応じて使い分けることで、JavaScriptの変数管理、オブジェクト操作、条件分岐の品質が向上し、バグの発生を防ぐことができます。初心者のうちにこの違いを把握しておくことは、今後のJavaScriptプログラミングにおいて非常に役立ちます。

サンプルプログラムで振り返り

 let user = null; // 初期値として意図的に空 let score; // 値はまだ設定されていない
console.log(user); // null
console.log(score); // undefined

if (user === null) {
console.log("ユーザー情報は未設定です");
}

if (score === undefined) {
console.log("スコアはまだ入力されていません");
}

// 厳密比較と値比較の違い
console.log(null == undefined); // true
console.log(null === undefined); // false
先生と生徒の振り返り会話

生徒

「先生、今回学んだことをまとめると、nullは意図的に値を空にするために使う、undefinedは値がまだ設定されていないことを示す、という理解で合っていますか?」

先生

「その通りです。型の違いも重要で、typeofで確認するとnullはobject、undefinedはundefinedになることも覚えておきましょう。」

生徒

「条件分岐や比較演算子の使い方も学びました。==は値だけ、===は型も含めて比較するから、場合によって使い分けるんですね。」

先生

「そうです。実務でも、ユーザー情報やデータの存在チェックに活用できるので、正しい理解は必須です。nullとundefinedを区別することで、バグを減らし、意図した動作を実現できます。」

生徒

「なるほど、これでJavaScriptの変数管理や条件分岐がもっとわかりやすくなりそうです!」

先生

「はい。繰り返しコードを書いて練習することで、自然にnullとundefinedの使い分けが身につきます。」

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptのスコープとは?ローカル変数・グローバル変数の違いと使い分け
New2
TypeScript
TypeScriptで型の合成時に発生する型エラーの対処法を徹底解説!初心者にもわかりやすく解説
New3
TypeScript
TypeScriptでAPI呼び出しをラップするユーティリティ関数の設計完全ガイド!初心者向けにAxiosやFetchの使い方を解説
New4
TypeScript
TypeScriptのMapped Typesとインターフェースの連携方法を徹底解説!初心者でも理解できる型変換の基本
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのループで無限ループが起きる原因と対策を初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptの文字列の長さを取得する(lengthプロパティ)
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptのファイル分割とimport/exportの基本を徹底解説!初心者でも安心のやさしい入門
No.5
Java&Spring記事人気No5
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.6
Java&Spring記事人気No6
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptでクエリパラメータを取得する方法を完全解説 URLSearchParamsの使い方を初心者向けに丁寧に説明
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptのプリミティブ型と参照型の違いを初心者向けに解説