カテゴリ: JavaScript 更新日: 2026/04/29

JavaScriptで理解するnullとundefinedの違い|初心者向け基本ガイド

JavaScriptのnullとundefinedの基本概念と使い分け
JavaScriptのnullとundefinedの基本概念と使い分け

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

生徒

「先生、JavaScriptでnullundefinedってよく出てくるんですけど、どう違うんですか?」

先生

nullundefinedはどちらも『値がない』ことを示しますが、意味や使い方が少し違います。順番に見ていきましょう。」

生徒

「どういうふうに違うんですか?」

先生

「簡単にいうと、undefinedは『まだ値が設定されていない』ことを意味し、nullは『意図的に値を空にした』ことを意味します。」

1. undefinedとは?基本の理解

1. undefinedとは?基本の理解
1. undefinedとは?基本の理解

JavaScriptのundefinedは、変数が宣言されたけれどもまだ値が代入されていない状態を示します。たとえば、新しい変数を作ったとき、特に値を設定しなければ自動的にundefinedになります。


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

上の例では、変数aを宣言しただけで値を設定していません。したがって、console.logで確認するとundefinedと表示されます。

2. nullとは?意図的に空にする

2. nullとは?意図的に空にする
2. nullとは?意図的に空にする

一方、nullはプログラマーが「この変数は意図的に空です」と設定するための値です。これはデータベースやオブジェクトの初期化などでよく使われます。


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

この例では、変数bnullを代入して、値が空であることを明示しています。

3. undefinedとnullの違いをイメージで理解する

3. undefinedとnullの違いをイメージで理解する
3. undefinedとnullの違いをイメージで理解する

初心者向けにイメージすると、undefinedは「まだ箱に何も入れていない状態」、nullは「箱の中身を空にすることを決めた状態」と考えるとわかりやすいです。


let box;        // undefined: 箱はあるけどまだ何も入れていない
let emptyBox = null; // null: 箱の中身は意図的に空

4. 変数の初期化での使い分け

4. 変数の初期化での使い分け
4. 変数の初期化での使い分け

実際のプログラミングでは、undefinedは自動的に設定されることが多く、nullは初期化のときや値をリセットしたいときに使います。


let userName;          // まだ名前は設定されていない
let userEmail = null;  // メールは意図的に空

こうして使い分けると、コードを見た人が「値が未設定なのか、意図的に空なのか」がすぐにわかります。

5. typeof演算子での違い

5. typeof演算子での違い
5. typeof演算子での違い

typeof演算子を使うと、undefinednullの違いが少し面白い形で見えます。


console.log(typeof undefined); // "undefined"
console.log(typeof null);      // "object"(これはJavaScriptの仕様による)

注意点として、nulltypeof"object"と表示されますが、これはJavaScriptの歴史的な仕様です。実際にはnullは「値がないこと」を示しています。

6. 関数の戻り値での使用例

6. 関数の戻り値での使用例
6. 関数の戻り値での使用例

関数で値が返ってこない場合はundefinedになります。逆に、条件によって値が存在しない場合はnullを返すこともあります。


function findUser(id) {
  if (id === 1) {
    return "Taro";
  } else {
    return null; // ユーザーが存在しない場合
  }
}

console.log(findUser(1)); // "Taro"
console.log(findUser(2)); // null

このようにnullを返すことで、「値がないけれど処理自体は正常」という意味を持たせることができます。

7. オブジェクトや配列でのnullとundefined

7. オブジェクトや配列でのnullとundefined
7. オブジェクトや配列でのnullとundefined

オブジェクトや配列でもnullundefinedの使い分けが可能です。


let obj = { name: "Taro", age: undefined };
let arr = [1, null, 3];

console.log(obj.age); // undefined
console.log(arr[1]); // null

オブジェクトではプロパティがまだ設定されていない場合はundefined、配列の値を意図的に空にする場合はnullを使います。

8. nullとundefinedを比較する方法

8. nullとundefinedを比較する方法
8. nullとundefinedを比較する方法

比較のときは注意が必要です。=====で結果が変わります。


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

==は値だけを比較するためtrueになりますが、===は型も比較するのでfalseになります。

9. 実務での使い分けのコツ

9. 実務での使い分けのコツ
9. 実務での使い分けのコツ

実務では、次のように使い分けると分かりやすくなります。

  • 変数を宣言しただけでまだ値を決めていない場合 → undefined
  • 値をリセットしたり、意図的に空にしたい場合 → null
  • 関数で値が存在しないことを明示したい場合 → null

let temp;         // undefined: 未設定
let result = null; // null: 意図的に空

このルールを覚えておくと、コードの可読性が上がり、バグも減らせます。

まとめ

まとめ
まとめ

今回の記事では、JavaScriptでよく混同されやすいnullundefinedの違いを初心者向けに詳しく解説しました。undefinedは変数が宣言されているものの、まだ値が設定されていない状態を示す一方で、nullはプログラマーが意図的に「値を空にする」と設定する特別な値です。コードの中で使い分けることで、変数の状態や意図が明確になり、可読性の高いプログラムを作ることができます。

まず、変数宣言時に値を設定しなければ自動的にundefinedになります。例えばlet a;と宣言するだけで、console.log(a)とするとundefinedと表示されます。これは、JavaScriptが変数の存在は認識しているが、まだ値が入っていないことを示しています。

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

一方で、nullはプログラマーが明示的に値を空にするために使用します。例えば、ユーザー情報のメールアドレスがまだ設定されていない場合にlet userEmail = null;とすることで「意図的に空である」という意味を持たせることができます。

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

undefinednullの違いは、初期化のタイミングや値の有無の意味付けによって使い分けられます。例えばオブジェクトのプロパティがまだ設定されていない場合はundefinedを使い、配列の特定の要素を意図的に空にしたい場合にはnullを使うとコードの意図が明確になります。

 let obj = { name: "Taro", age: undefined }; let arr = [1, null, 3];
console.log(obj.age); // undefined
console.log(arr[1]); // null

また、typeof演算子で確認するとundefinedは文字通り"undefined"と表示されますが、null"object"と表示されます。これはJavaScriptの歴史的な仕様によるものですが、混乱せずに「値がないこと」を示していると理解しておけば問題ありません。


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

さらに、比較演算子を使う際も注意が必要です。==ではnull == undefinedtrueになりますが、===では型も含めて比較するためfalseになります。この違いを理解することで、バグを防ぎやすくなります。


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

実務では、変数を宣言しただけで値を決めていない場合はundefined、値をリセットしたり意図的に空にしたい場合はnullを使うのが基本です。関数の戻り値でも、値が存在しない場合にはnullを返すことで「値がないが正常」という意味を持たせることができます。


function findUser(id) {
if (id === 1) {
return "Taro";
} else {
return null;
}
}
console.log(findUser(1)); // "Taro"
console.log(findUser(2)); // null

これらの基本を押さえることで、JavaScriptの変数管理がスムーズになり、バグを減らし、可読性の高いコードを書けるようになります。

先生と生徒の振り返り会話

生徒

「なるほど、undefinedは値がまだ設定されていない状態で、nullは意図的に空にするんですね。」

先生

「その通りです。コードを読む人が変数の状態を理解しやすくなるのが大きなポイントです。」

生徒

「比較のときの=====の違いも大事ですね。」

先生

「そうですね。==は値だけを見ますが、===は型も見ます。実務では===を使うことが多く、意図しない型変換によるバグを防げます。」

生徒

「オブジェクトや配列でのnullundefinedの使い分けも理解できました。プロパティが未設定ならundefined、意図的に空にする場合はnullですね。」

先生

「その通りです。この基本ルールを覚えておくと、JavaScriptでの変数管理が格段にわかりやすくなりますし、バグも減らせます。」

生徒

「今日の内容をしっかり使って、今後のプログラミングに活かしていきます!」

カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptの関数に型をつける方法(引数・戻り値)を初心者向けに徹底解説!
New2
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
New3
TypeScript
TypeScriptでExpressのミドルウェアを型安全に定義する方法!バックエンド開発の初心者向け解説
New4
JavaScript
JavaScriptのfilterメソッドで条件に合う要素を抽出する方法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptでフォームの値を取得する方法を徹底解説!valueプロパティの使い道
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptでHTML5バリデーションAPIを使いこなす!初心者でもわかるフォーム入力チェック
No.3
Java&Spring記事人気No3
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptで要素を削除する方法(removeChild, removeなど)
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptの配列操作でよくあるエラーとその解決法まとめ
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptの現在日時を取得する方法を完全ガイド!初心者でもわかるDate.now()とnew Date()