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

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

NaNはJavaScriptのグローバルプロパティの一つで、「Not-a-Number(非数)」を表す特殊な値です。無効な数値演算の結果など、有効な数値ではないことを示すために使われます。

構文

Number.NaN

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

ある値がNaNかどうかを調べるには、isNaN()メソッドまたはNumber.isNaN()メソッドを使用します。まずはisNaN()を使った基本的な確認方法の例を見てみましょう。

サンプルコード

<!DOCTYPE html>
<html>
   <body>
      <button onclick="display()">チェック</button>
      <p id="test"></p>
      <script>
         function display() {
            var a = "";
            a = a + isNaN(434) + ": 434<br>";
            a = a + isNaN(-23.1) + ": -23.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>

実行結果

false : 434
false : -23.1
true : 'Hello'
true : NaN
false : ''
false : 0
false : false

このように、NaN自身や数値に変換できない文字列「Hello」に対してはtrueが返され、通常の数値や空文字・0・falseなど数値に変換できる値に対してはfalseが返されます。

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

isNaN()は引数を暗黙的に数値へ変換してから判定するため、文字列なども変換後の結果に基づいて評価される点に注意が必要です。一方、Number.isNaN()は型変換を行わず、渡された値そのものがNaNである場合にのみtrueを返します。

そのため、意図しない型変換による誤判定を避けたい場合は、より厳密なNumber.isNaN()の使用が推奨されます。

  1. JavaScriptでDisarium数(デシリアム数)を判定する方法

    Disarium数とは?Disarium数(デシリアム数)とは、各桁の数字をその位置に応じた累乗で計算し、その合計が元の数値と一致するような数のことです。以下の式で表されます。xy...z = x^1 + y^2 + ... + z^nここで、n はその数値の桁数を表します。具体例例として、175 を見てみましょう。175 = 1^1 + 7^2 + 5^3 = 1 + 49 + 125 = 175このように、各桁を「1乗、2乗、3乗…」と位置に応じてべき乗した結果の合計が元の数値と等しくなるため、175 は Disarium 数です。他にも 89(8^1 + 9^2 = 8 + 81 = 8

  2. JavaScriptで数値がfloat(浮動小数点数)か整数(integer)かを判定する方法

    JavaScriptでは、変数に格納された数値が「整数(integer)」なのか「浮動小数点数(float)」なのかを判別したい場面があります。たとえば、次のような変数を考えてみましょう。var value1 = 10; var value2 = 10.15;判定方法:Number() と剰余演算子(%)を組み合わせる数値がfloatかどうかを判定するには、Number()による型チェックと剰余演算子%を組み合わせた条件式を使用します。Number(value) === value && value % 1 !== 0;この条件式の仕組みは以下の通りです。Number(valu