isNaN関数(値がNaNかどうかを調べる)

JavaScript のグローバル関数のひとつである isNaN は対象の値が NaN (Not a Number) かどうかを調べ、 true または false を返します。ここでは isNaN 関数の使い方について解説します。

※ グローバル関数の isNaN と似たものとして Number オブジェクトで Number.isNaN メソッドが用意されており、より厳格に NaN かどうかを調べます。詳しくは「値がNaNかつ数値型であるかどうかを調べる(Number.isNaN)」を参照されてください。

(Last modified: )

isNaN関数の使い方

グローバル関数のひとつである isNaN 関数は、対象の値が NaN かどうかを調べて true または false を返します。書式は次の通りです。

isNaN(値)

引数に指定した値が NaN かどうかを調べます。値が数値型ではない場合はまず数値型に変換されたあとで調べます。

※ NaN とはグローバルオブジェクトのプロパティのひとつで非数( Not A Number )を表します。

NaN は特殊な値で、等価演算子である == や === で NaN 自身と等しいかどうか調べても false となるため等価演算子で NaN かどうかを調べることはできません。そのため isNaN 関数を使います。

console.log(NaN == NaN);
>> false

console.log(NaN === NaN);
>> false

isNaN(NaN);
>> true

isNaN 関数では、引数として NaN 以外の値で数値ではない値が指定された場合は数値に変換した上で NaN かどうかを調べます。どのような値が NaN となるのかは次のサンプルをみてください。

数値は false となります。またグローバルオブジェジェクトのプロパティで無限大を表す Infinity も false となります。

isNaN(10);
>> false

isNaN(Infinity);
>> false

文字列は true となりますが、数値のみで構成される文字列と空文字については数値に変換したときに数値となるため false となります。

isNaN('Hello');  // 数値に変換すると NaN
>> true

isNaN('24old');  // 数値に変換すると NaN
>> true

isNaN('72');  // 数値に変換すると 72
>> false

isNaN('');  // 数値に変換すると 0
>> false

true は数値に変換すると 1 、 false は数値に変換すると 0 、 null は数値に変換すると 0 となるため false となります。 undefined は数値に変換すると NaN となるため true となります。

isNaN(true);  // 数値に変換すると 1
>> false

isNaN(false);  // 数値に変換すると 0
>> false

isNaN(null);  // 数値に変換すると 0
>> false

isNaN(undefined);  // 数値に変換すると NaN
>> true

値がオブジェクト型の場合はそれぞれ異なります。

isNaN([10]);  // 数値に変換すると 10
>> false

isNaN([10, 20]);  // 数値に変換すると NaN
>> true

isNaN([]);  // 数値に変換すると 0
>> false

isNaN({a:'10'});  // 数値に変換すると NaN
>> true

isNaN 関数は対象の値が数値かどうかではなく、対象の値を数値に変換したときに NaN となるかどうかを調べている点に注意してください。

-- --

isNaN 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。