JavaScript

【JavaScript】これでOK! undefinedとnullの判定方法

こんにちは、テルプロです!

「JavaScriptのundefinedとnullの判定方法」でお悩みではないでしょうか。

JavaScriptを学んでいると、undefinednullという値に出会います。これらは似ているように見えますが、異なるもので、それぞれ異なるケースで使用されます。
本記事では、JavaScriptのundefinednullの違い、判定方法、そして注意すべきポイントについて解説します。

本記事を読むことで
  1. undefinednullが分かる
  2. undefinednullの違いが分かる
  3. undefinedとnullの判定方法が分かる

JavaScriptのundefinedとは?

undefinedは、変数が宣言されたが、まだ値が割り当てられていない状態を示します。JavaScriptでは、次のような場合にundefinedが返されます。

  • 変数が宣言されたが、値が代入されていない場合。
  • 関数が明示的にreturn文を使用しない場合。
  • オブジェクトに存在しないプロパティにアクセスした場合。

例: undefinedの基本的な使用例

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

JavaScriptのnullとは?

nullは、明示的に「値がない」ことを示すために使用される特殊な値です。これは、変数やプロパティがオブジェクトを指していないことを明示的に示すために使われます。

例: nullの基本的な使用例

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

undefinednullの違い

  • 型の違い: undefinedは未定義の値であり、nullは意図的に値がないことを示します。
  • 使用目的: undefinedは通常、システム側で設定される値であり、nullは開発者が意図的に設定する値です。

undefinednullif文で判定する方法

JavaScriptでは、if文を使ってundefinednullを判定することがよくあります。これらの値をif文でどのように扱うかについて解説します。

1. undefinedif文で判定する

undefinedかどうかを判定するには、以下のようにif文を使います。

let a;

if (a === undefined) {
    console.log('aはundefinedです');
}

この場合、変数aundefinedであれば、console.logが実行されます。

2. nullif文で判定する

同様に、nullを判定するには以下のようにif文を使います。

let b = null;

if (b === null) {
    console.log('bはnullです');
}

この場合も、変数bnullであれば、条件が真となり、console.logが実行されます。

3. undefinednullの両方を判定する

undefinedまたはnullのどちらかであるかを判定したい場合、次のようにif文を使用します。

let c;

if (c === undefined || c === null) {
    console.log('cはundefinedまたはnullです');
}

===を使って型も含めた厳密な判定を行っています。

JavaScriptのundefinednullの他の判定方法

1. typeof演算子を使用した判定

typeof演算子は、変数の型を文字列で返します。

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

let b = null;
console.log(typeof b); // "object" (注意: `null`は歴史的な理由から "object" と表示されます)

2.ルーズ等価演算子 (==)による注意点

ルーズ等価演算子は型変換を行って比較するため、undefinednullが等しいと判定されます。

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

まとめ

if文を使ってundefinednullを判定する方法は、JavaScriptでの基本的な操作ですが、非常に重要です。特に、===を使用した厳密な判定を行うことで、意図しないバグを防ぐことができます。適切な条件分岐を使い分けることで、より安全で読みやすいコードを書きましょう。

ABOUT ME
テルプロ
東京都在住のアプリエンジニア。大学では、ソフトウェア開発の研究に取り組む。長期のエンジニアインターンシップを経て、実務スキルを磨き、現在はフリーランスエンジニアとしても活動中。メインはモバイルアプリ開発。IT関連の記事監修も行い、技術の共有と普及に励んでいます。 監修実績(レバテックフリーランス
Flutter関連の書籍を出版しました!