IT・WEB・ゲーム業界の転職に強いR-Stone

転職コラム

Javascriptのnull判定とは?いまさら聞けない使い方や実例をわかりやすく説明

JavaScriptでのnull判定、正しく使えていますか?本記事では、「今更聞けない」と思われがちなnull判定を、基礎から応用まで丁寧に解説します。

等価演算子と厳密等価演算子の違い、typeof演算子の注意点、最新のNullish coalescing演算子の使い方など、実例を交えながら分かりやすく説明します。この機会に、自身のコードでのnull判定を見直し、より堅牢なプログラミングを目指しましょう。

JavaScriptのnull判定とは?

JavaScriptのnull判定は、変数や値がnullかどうかを確認する方法です。

nullは「値が存在しない」ことを意味する特殊な値で、開発者が意図的に「何もない」状態を表現するために使用します。

null判定は、エラーを防ぎプログラムの安全性を高めるために重要です。例えば、nullの可能性がある変数にメソッドを呼び出すと、エラーの発生する可能性があります。そのため、事前にnull判定をおこない、エラーを回避できます。

null判定の基本的な方法は、厳密等価演算子(===)を使用します。

if (variable === null) {

  console.log(‘変数はnullです’);

}

上記の方法で、変数がnullかどうかを正確に判定できます。

undefinedとの違いについて

JavaScriptで、nullとundefinedは似ているようで異なる概念です。

両者の主な違いは、nullが意図的に「値がない」ことを示すのに対し、undefinedは「値が割り当てられていない」ことを示す点です。

undefinedは、変数が宣言されただけで値が割り当てられていない場合や、オブジェクトの存在しないプロパティにアクセスしたとき、自動的に割り当てられます。一方、nullは開発者が明示的に割り当てる必要があります。

nullとundefinedの違いを理解し適切に使い分けるよう、心がけてください。

null判定の基本的な使い方

null判定には厳密等価演算子(===)を使用し、以下のようにできます。

if (value === null) {

    console.log(‘valueはnullです’);

} else {

    // value の値を使った処理を記述……

}

一方、等価演算子(==)を使用すると、nullとundefinedの両方を判定します。

if (value == null) {

    console.log(‘valueはnullまたはundefinedです’);

}

typeof演算子を使用したnull判定では’object’と判定されるため、以下のように記述します。

if (value === null && typeof value === ‘object’) {

    console.log(‘valueはnullです’);

}

Object.is()メソッドを使用したnull判定も可能です。

if (Object.is(value, null)) {

    console.log(‘valueはnullです’);

}

nullチェックを簡潔に記述するには、??演算子を活用できます。

const result = value ?? ‘デフォルト値’;

上記の例では、valueがnullまたはundefinedの場合、’デフォルト値’が代入され、それ以外ではvalueがresultへ代入されます。

Nullish coalescing(合体)演算子(??)は、左辺の値がnullまたはundefinedの場合に右辺の値を返す短絡評価演算子で、JavaScriptのES2020で新たに導入されました。

null判定の実例

実際の開発でnull判定がどのように使われるか、いくつかの実例を見てみましょう。

フォームの入力値チェックでは、次のようにnull判定をおこないます。

function validateForm(name, email) {

    if (name === null || name === ) {

        console.log(‘名前を入力してください’);

        return false;

    }

    if (email === null || email === ) {

        console.log(‘メールアドレスを入力してください’);

        return false;

    }

    return true;

}

APIレスポンスのデータ処理では、nullチェックが重要です。

fetch(‘https://api.example.com/data’)

    .then(response => response.json())

    .then(data => {

        if (data === null) {

            console.log(‘データが取得できませんでした’);

        } else {

            console.log(‘取得したデータ:’, data);

        }

    });

オブジェクトのプロパティ存在確認でもnull判定は有用です。

const user = { name: ‘John’, age: null };

 

if (user.age === null) {

    console.log(‘年齢が設定されていません’);

} else {

    console.log(‘年齢:’, user.age);

}

条件分岐、配列の要素へのアクセス、関数の引数のチェックなど、さまざまな場面でnull判定は活用されます。適切なnull判定をおこなうことで、エラーを防ぎ、より堅牢なコードを書くことができます。

nullの代入と他の偽値の比較

nullを代入した変数の型は、typeof演算子で確認すると、JavaScriptの仕様により“object”となります。

一方、undefinedの型は“undefined”となります。

console.log(typeof null);  // object

console.log(typeof undefined); // undefined

===では型の違いを考慮するため、nullとundefinedの比較は以下の結果になります。

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

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

nullとfalse、nullと0を比較すると、等価演算子(==)・厳密等価演算子(===)どちらでも異なると判定されます。

nullは偽値ですが、falseとは別の値として扱われ、nullは数値ではないためです。

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

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

console.log(null == 0);  // false

console.log(null === 0); // false

まとめ

JavaScriptのnull判定には多様な方法があり、それぞれに特徴があります。基本的な判定方法から最新のNullish coalescing演算子まで、状況に応じて適切に使い分けることが重要です。

null判定の適切な使用は、プログラムの安全性と品質を高めます。本記事を参考に、自身のコードでのnull判定を見直してみてはいかがでしょうか。