カテゴリ: JavaScript 更新日: 2026/05/01

JavaScriptでundefinedが返されるケースを初心者でもわかるように解説!nullとの違いも理解しよう

JavaScriptでundefinedが返されるケースとよくある例
JavaScriptでundefinedが返されるケースとよくある例

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

生徒

「先生、JavaScriptで変数を作ったのに値を入れていないときって、何が返ってくるんですか?」

先生

「それはundefinedです。JavaScriptでは、値がまだ設定されていない変数や、存在しないプロパティを参照した場合にundefinedが返されます。」

生徒

「えっ、値が空だからnullじゃないんですか?」

先生

nullは開発者が『ここは値が空です』と明示的に設定したときに使うものです。undefinedはJavaScript自身が『値がまだありません』と教えてくれる状態です。」

生徒

「なるほど。じゃあ、どんなときにundefinedが返ってくるんですか?」

先生

「それでは、具体的な例を順番に見ていきましょう!」

1. 変数を宣言しただけのケース

1. 変数を宣言しただけのケース
1. 変数を宣言しただけのケース

JavaScriptで変数を作っただけで値を代入していない場合、その変数を参照するとundefinedが返されます。これは初心者が最初に出会いやすいケースです。


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

ここではmyVariableを宣言しましたが、まだ値を入れていないのでundefinedになります。

2. 関数で値を返さない場合

2. 関数で値を返さない場合
2. 関数で値を返さない場合

関数を作ったけれども、return文で値を返さなかった場合も、呼び出すとundefinedが返ってきます。


function greet() {
  console.log("こんにちは!");
}
let result = greet(); // 実際に呼び出す
console.log(result); // undefined

関数内で何も返していないので、JavaScriptが自動的にundefinedを返しています。

3. 存在しないオブジェクトのプロパティを参照した場合

3. 存在しないオブジェクトのプロパティを参照した場合
3. 存在しないオブジェクトのプロパティを参照した場合

オブジェクトにまだ作られていないプロパティを参照するとundefinedになります。


const person = { name: "太郎" };
console.log(person.age); // undefined

ここではageプロパティは作っていないので、JavaScriptが値がないことを示すためにundefinedを返します。

4. 関数の引数が渡されなかった場合

4. 関数の引数が渡されなかった場合
4. 関数の引数が渡されなかった場合

関数に引数を渡さなかった場合、渡されなかった引数は自動的にundefinedになります。


function sayHello(name) {
  console.log("こんにちは、" + name);
}
sayHello(); // こんにちは、undefined

この場合、nameに値が渡されなかったのでundefinedが入ります。

5. 配列の存在しない要素を参照した場合

5. 配列の存在しない要素を参照した場合
5. 配列の存在しない要素を参照した場合

配列のインデックスに存在しない番号を指定すると、値はundefinedになります。


const colors = ["赤", "青"];
console.log(colors[2]); // undefined

配列の2番目の要素は存在しないため、JavaScriptがundefinedを返します。

6. return文のないループ内でのundefined

6. return文のないループ内でのundefined
6. return文のないループ内でのundefined

ループの中で値を返すことを期待しても、returnがない場合、結果はundefinedになります。


for (let i = 0; i < 3; i++) {
  console.log(i);
}
let loopResult = undefined;
console.log(loopResult); // undefined

この例ではループ自体は値を返さず、変数loopResultには値が設定されていないため、undefinedです。

7. deleteで削除したプロパティを参照した場合

7. deleteで削除したプロパティを参照した場合
7. deleteで削除したプロパティを参照した場合

オブジェクトのプロパティをdeleteで削除した場合、そのプロパティを参照するとundefinedになります。


const obj = { key: "value" };
delete obj.key;
console.log(obj.key); // undefined

削除されたプロパティは存在しないため、値はundefinedです。

8. nullとundefinedの違いを覚えよう

8. nullとundefinedの違いを覚えよう
8. nullとundefinedの違いを覚えよう

最後にnullとの違いを整理しておきましょう。undefinedは値がまだ設定されていない状態、nullは開発者が意図的に「ここは空」と設定した状態です。


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

この違いを理解しておくと、バグを防ぐことができます。

9. undefinedが出ても焦らないために

9. undefinedが出ても焦らないために
9. undefinedが出ても焦らないために

JavaScriptでundefinedが返ってきても、慌てる必要はありません。上で紹介したように、変数の初期化忘れや存在しないプロパティ参照などが原因です。確認すべきは、どこで値が設定されていないかです。


let score;
if (score === undefined) {
  console.log("まだ値が設定されていません");
}

このようにチェックすることで、予期せぬundefinedによるエラーを防ぐことができます。

まとめ

まとめ
まとめ

今回の記事では、JavaScriptでundefinedが返される様々なケースについて詳しく解説しました。初心者が最初に出会いやすい「変数を宣言しただけの場合」から、関数で値を返さない場合、存在しないオブジェクトのプロパティや配列の要素を参照した場合、関数の引数が渡されなかった場合、ループ内でのreturnなし、deleteで削除したプロパティの参照まで、順を追って確認しました。これらのケースはいずれも、JavaScriptが「まだ値が設定されていません」と教えてくれる仕組みであり、意図的に値を空にするnullとは明確に区別されます。

まとめると、undefinedが返る代表的なケースは以下の通りです。まず、変数を宣言しただけで値を入れていない場合は自動的にundefinedになります。次に、関数を呼び出したが値を返さない場合、JavaScriptは自動的にundefinedを返します。また、オブジェクトの存在しないプロパティや、配列の存在しない要素を参照した場合もundefinedになります。さらに、関数に引数を渡さなかった場合や、ループ内で値を返さない場合、そしてdeleteで削除されたプロパティも同様にundefinedが返されます。

JavaScriptではundefinednullの区別を理解することが重要です。undefinedは値が未定義であることを示し、nullは開発者が意図的に値が空であることを示すものです。これを正しく使い分けることで、予期せぬエラーやバグを防ぐことができます。また、undefinedが出た場合でも、変数やオブジェクト、関数の引数を確認すれば原因を特定できるので、焦らず冷静にコードを確認することが大切です。

以下のサンプルコードでは、undefinedの典型的なケースをまとめています。実際に動かして挙動を確認することで、理解がさらに深まります。

 // 変数宣言のみ let value; console.log(value); // undefined
// 関数が値を返さない場合
function sayHi() {
console.log("こんにちは");
}
let res = sayHi();
console.log(res); // undefined

// 存在しないオブジェクトのプロパティ
const obj = { name: "花子" };
console.log(obj.age); // undefined

// 配列の存在しない要素
const arr = ["赤", "青"];
console.log(arr[5]); // undefined

// 引数が渡されなかった場合
function greet(name) {
console.log("こんにちは、" + name);
}
greet(); // こんにちは、undefined

// deleteで削除したプロパティ
const data = { key: "値" };
delete data.key;
console.log(data.key); // undefined
先生と生徒の振り返り会話

生徒

「先生、今回学んだことを整理すると、undefinedが出るのは値がまだ設定されていないときなんですね?」

先生

「そうです。変数を宣言しただけのとき、関数で値を返さないとき、存在しないプロパティや配列の要素を参照するとき、引数が渡されなかったときなど、すべて値が未定義の状態でundefinedが返ります。」

生徒

「じゃあ、nullとは違うんですね?」

先生

「はい、nullは開発者が意図的に『ここは空です』と設定したものです。undefinedはJavaScript自身が『まだ値がありません』と教えてくれる状態です。」

生徒

「なるほど。なので、undefinedが出ても焦らず、どこで値が設定されていないかを確認すればいいんですね。」

先生

「その通りです。今回学んだケースを覚えておくと、デバッグもスムーズになりますし、予期せぬエラーを防ぐことができます。」

生徒

「ありがとうございました。これでundefinedの意味や使い方がよく分かりました。」

カテゴリの一覧へ
新着記事
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でオブジェクト指向のカプセル化を学ぶ!初心者でもわかるクラスとプロパティの保護方法