JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのNaNとは?意味とisNaN()による判定方法をわかりやすく解説

NaN(Not-a-Number)とは

NaNはJavaScriptのプロパティの一つで、「Not-a-Number(数値ではない)」を表す特殊な値です。この値が返されるということは、その値が有効な数値ではないことを意味します。

例えば、次のようなケースでNaNが発生します。

  • 0 / 0 のように数学的に定義できない計算を行った場合
  • parseInt("abc") のように、文字列を数値に変換できなかった場合
  • 未定義の演算結果(Math.sqrt(-1) など)を求めた場合

なお、NaNには「自分自身と等しくない」という特徴があります。つまり NaN === NaNfalse になるため、通常の比較演算子では判定できません。そこで登場するのが isNaN() メソッドです。

構文

NaNの構文は以下のとおりです。

Number.NaN

isNaN()メソッドでNaNかどうかを判定する

ある値がNaNかどうかを確認するには、Number.isNaN() またはグローバル関数の isNaN() を使用します。これらのメソッドは、引数がNaNであれば true、そうでなければ false を返します。

サンプルコード(ライブデモ)

<!DOCTYPE html>
<html>
   <body>
      <button onclick="display()">Check</button>
      <p id="test"></p>
      <script>
         function display() {
            var a = "";
            a = a + isNaN(6234) + ": 6234<br>";
            a = a + isNaN(-52.1) + ": -52.1<br>";
            a = a + isNaN('Hello') + ": 'Hello'<br>";
            a = a + isNaN(NaN) + ": NaN<br>";
            a = a + isNaN('') + ": ''<br>";
            a = a + isNaN(0) + ": 0<br>";
            a = a + isNaN(false) + ": false<br>";
            document.getElementById("test").innerHTML = a;
         }
      </script>
   </body>
</html>

実行結果

入力値isNaN()の戻り値
6234false
-52.1false
'Hello'true
NaNtrue
''(空文字列)false
0false
falsefalse

空文字列や falsefalse を返すのは、isNaN() が内部で暗黙的に型変換(数値への変換)を行うためです。空文字列は 0 に、false0 に変換されるため、NaNではないと判断されます。

isNaN()とNumber.isNaN()の違い

ES6(ECMAScript 2015)で導入された Number.isNaN() は、型変換を行わずに「その値そのものがNaN型かどうか」を厳密に判定します。一方、グローバルの isNaN() は判定前に引数を数値へ変換するため、挙動が異なる場合があります。

isNaN('Hello');        // true(数値に変換できないため)
Number.isNaN('Hello'); // false(文字列はNaNそのものではないため)
Number.isNaN(NaN);     // true

意図しない型変換を避けたい場合は、Number.isNaN() の使用が推奨されます。

  1. JavaScriptのNumberオブジェクトにおけるNaNプロパティとは?意味と使い方を解説

    NaN(Not-a-Number)とはNaNは「Not-a-Number(非数)」を表す特別な値で、引用符で囲まないリテラル定数として扱われます。この値の最大の特徴は、いかなる数値とも等しくならないという点です。さらに、NaN自身とNaNを比較した場合であっても等価にはなりません。この性質を利用して、本来なら有効な数値を返すはずの関数が、何らかの理由で正常な結果を返せないエラー状態であることを示す目的で、NaNがよく使われます。なお、ある値がNaNかどうかを判定したい場合は、比較演算子(===など)では必ずfalseになるため、Number.isNaN()メソッドやisNaN()関数を使用する

  2. JavaScriptで数値がNaNかどうかを確認する方法|isNaN()とNumber.isNaN()の違いも解説

    NaNはJavaScriptのグローバルプロパティの一つで、「Not-a-Number(非数)」を表す特殊な値です。無効な数値演算の結果など、有効な数値ではないことを示すために使われます。 構文 Number.NaN isNaN()メソッドでNaNを判定する ある値がNaNかどうかを調べるには、isNaN()メソッドまたはNumber.isNaN()メソッドを使用します。まずはisNaN()を使った基本的な確認方法の例を見てみましょう。 サンプルコード <!DOCTYPE html> <html>    <body>