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

JavaScriptでnullとundefinedを安全に扱う方法を完全解説!初心者向けガイド

JavaScriptのnullとundefinedを安全に扱うテクニック
JavaScriptのnullとundefinedを安全に扱うテクニック

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

生徒

「先生、JavaScriptでnullundefinedってよく見かけますけど、違いがよくわかりません。」

先生

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

生徒

「それぞれ安全に扱うにはどうしたらいいですか?」

先生

「順番にポイントを整理して、サンプルコードと一緒に見ていきましょう!」

1. nullとundefinedの基本的な違い

1. nullとundefinedの基本的な違い
1. nullとundefinedの基本的な違い

JavaScriptでは変数に値を設定しないとundefinedになります。例えば、次のように書くと変数xはまだ値を持っていません。


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

一方でnullは、開発者が「ここには値がない」と意図的に設定する値です。


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

この違いを理解することが、安全にJavaScriptを扱う第一歩です。

2. undefinedが発生する典型例

2. undefinedが発生する典型例
2. undefinedが発生する典型例

変数宣言だけで値を設定していない場合や、関数で値を返さない場合にundefinedが返ります。


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

function greet() {
  // 何も返さない
}
console.log(greet()); // undefined

このような場合は、値が設定されていないことを安全にチェックする必要があります。

3. nullを使うべきケース

3. nullを使うべきケース
3. nullを使うべきケース

データベースやオブジェクトのプロパティに「値がないことを明示したい」場合にnullを使います。


let user = {
  name: "太郎",
  age: null // 年齢は未登録
};
console.log(user.age); // null

このようにnullを使うと、値が意図的に空であることが明確になり、バグを防ぎやすくなります。

4. 安全に値をチェックする方法

4. 安全に値をチェックする方法
4. 安全に値をチェックする方法

JavaScriptではnullundefinedはどちらも「値がない」という意味で扱われることが多いので、安全にチェックするために== nullを使う方法があります。


let data;

if (data == null) {
  console.log("値がありません"); // undefinedもnullもキャッチ
}

この書き方だと、nullundefinedの両方をまとめて確認できます。

5. デフォルト値で安全に処理する

5. デフォルト値で安全に処理する
5. デフォルト値で安全に処理する

変数がnullundefinedの場合、デフォルト値を設定すると安全に処理できます。JavaScriptでは論理和演算子||やnull合体演算子??が便利です。


let input;
let value = input || "デフォルト値";
console.log(value); // デフォルト値

let input2 = null;
let value2 = input2 ?? "デフォルト値";
console.log(value2); // デフォルト値

||はFalsy(false扱い)も含むので、0や空文字もデフォルト値に置き換わります。??nullundefinedのみを置き換えるのでより安全です。

6. オブジェクトの安全なアクセス

6. オブジェクトの安全なアクセス
6. オブジェクトの安全なアクセス

オブジェクトのプロパティにアクセスする際に値がないとエラーになることがあります。そんなときはオプショナルチェイニング?.を使います。


let user = { name: "花子" };
console.log(user.age?.year); // undefined(エラーにならない)

これでnullundefinedでも安全にプロパティにアクセスできます。

7. 関数でnullとundefinedを使い分ける

7. 関数でnullとundefinedを使い分ける
7. 関数でnullとundefinedを使い分ける

関数の引数で値が渡されなかった場合はundefinedになります。必要に応じてnullを明示的に渡すこともできます。


function greet(name) {
  if (name == null) {
    name = "ゲスト";
  }
  console.log("こんにちは、" + name + "さん");
}

greet(); // こんにちは、ゲストさん
greet(null); // こんにちは、ゲストさん
greet("太郎"); // こんにちは、太郎さん

こうすることで、意図せずundefinedで処理が止まることを防げます。

8. 配列やオブジェクトの初期化時にnullで安全性を確保

8. 配列やオブジェクトの初期化時にnullで安全性を確保
8. 配列やオブジェクトの初期化時にnullで安全性を確保

配列やオブジェクトを初期化する際、nullを入れておくと後から値が設定されることが明確になります。


let scores = [null, null, null];

for (let i = 0; i < scores.length; i++) {
  if (scores[i] == null) {
    scores[i] = 0;
  }
}
console.log(scores); // [0, 0, 0]

これにより、意図しないundefinedを防ぎ、安全にデータを扱えます。

9. まとめの前に:nullとundefinedを安全に扱うポイント

9. まとめの前に:nullとundefinedを安全に扱うポイント
9. まとめの前に:nullとundefinedを安全に扱うポイント

JavaScriptではnullundefinedを正しく理解して、安全に扱うことが重要です。ポイントを整理すると次の通りです。

  • 値が設定されていない場合はundefinedになる
  • 意図的に空の値を示すときはnullを使う
  • == nullnullundefinedをまとめてチェック
  • デフォルト値やオプショナルチェイニングで安全にアクセスする

これらを意識するだけで、初心者でもnullundefinedによるバグを大幅に減らせます。

まとめ

まとめ
まとめ

JavaScriptでのnullundefinedの扱い方を理解することは、コードの安全性や保守性を高める上で非常に重要です。まず、undefinedは変数に値がまだ設定されていない状態を示し、開発者が意図的に設定することはほとんどありません。一方、nullは「ここには値が存在しない」という意味を明示的に示すために使われます。これを正しく使い分けることで、バグの原因となる予期せぬ値の混入を防げます。さらに、条件分岐で== nullを使うと、nullundefinedをまとめて安全にチェックでき、コードの簡潔化にもつながります。また、デフォルト値やnull合体演算子??、論理和演算子||を活用することで、変数がnullundefinedの場合でも安全に値を設定することが可能です。オブジェクトや配列へのアクセス時はオプショナルチェイニング?.を使うことで、プロパティが存在しない場合でもエラーを避けながら値にアクセスできます。関数の引数にnullundefinedが渡されるケースでも、初期値を設定することで意図しない挙動を防ぐことができます。これらのポイントを踏まえたサンプルコードは以下の通りです。

サンプルコード:nullとundefinedを安全に扱う例

 let userInput; let username = userInput ?? "ゲスト"; console.log(username); // ゲスト
let person = { name: "花子" };
console.log(person.age?.year); // undefined

function greet(name) {
if (name == null) {
name = "未登録";
}
console.log("こんにちは、" + name + "さん");
}
greet(); // こんにちは、未登録さん
greet(null); // こんにちは、未登録さん
greet("太郎"); // こんにちは、太郎さん

このように、nullundefinedの違いを理解し、状況に応じて使い分けることがJavaScriptの安全なプログラミングには欠かせません。また、オプショナルチェイニングやnull合体演算子、デフォルト値を組み合わせることで、予期せぬエラーを防ぎつつ柔軟なコードを書くことが可能です。配列やオブジェクトを初期化する際にもnullを使うと、後から値が設定されることが明確になり、データの安全性がさらに向上します。これらの技術を組み合わせることで、初心者でもJavaScriptのバグを減らし、保守性の高いコードを書くことができます。

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

生徒

「先生、nullundefinedの違いや安全な使い方をまとめるとこんなにポイントがあるんですね。」

先生

「そうです。ポイントは主に五つあります。まず、値が設定されていない場合はundefinedになること。次に、意図的に空の値を示したい場合はnullを使うことです。そして、== nullを使えばnullundefinedをまとめて安全にチェックできます。」

生徒

「なるほど。デフォルト値やオプショナルチェイニングを使うことで、エラーも防げるんですね。」

先生

「その通りです。さらに、関数の引数や配列、オブジェクトを初期化する際にもnullundefinedを意識することで、コード全体の安全性と保守性が向上します。これを実践するだけで、初心者でもバグの少ないJavaScriptプログラムを書けるようになります。」

生徒

「わかりました。今日からnullundefinedの違いを意識して、オプショナルチェイニングやデフォルト値を使って安全にプログラムを書きます!」

カテゴリの一覧へ
新着記事
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
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptのプリミティブ型と参照型の違いを初心者向けに解説