JavaScriptのNaNとは?意味とisNaN()による判定方法をわかりやすく解説
NaN(Not-a-Number)とは
NaNはJavaScriptのプロパティの一つで、「Not-a-Number(数値ではない)」を表す特殊な値です。この値が返されるということは、その値が有効な数値ではないことを意味します。
例えば、次のようなケースでNaNが発生します。
0 / 0のように数学的に定義できない計算を行った場合parseInt("abc")のように、文字列を数値に変換できなかった場合- 未定義の演算結果(
Math.sqrt(-1)など)を求めた場合
なお、NaNには「自分自身と等しくない」という特徴があります。つまり NaN === NaN は false になるため、通常の比較演算子では判定できません。そこで登場するのが 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()の戻り値 |
|---|---|
| 6234 | false |
| -52.1 | false |
| 'Hello' | true |
| NaN | true |
| ''(空文字列) | false |
| 0 | false |
| false | false |
空文字列や false が false を返すのは、isNaN() が内部で暗黙的に型変換(数値への変換)を行うためです。空文字列は 0 に、false も 0 に変換されるため、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() の使用が推奨されます。
-
JavaScriptのNumberオブジェクトにおけるNaNプロパティとは?意味と使い方を解説
NaN(Not-a-Number)とはNaNは「Not-a-Number(非数)」を表す特別な値で、引用符で囲まないリテラル定数として扱われます。この値の最大の特徴は、いかなる数値とも等しくならないという点です。さらに、NaN自身とNaNを比較した場合であっても等価にはなりません。この性質を利用して、本来なら有効な数値を返すはずの関数が、何らかの理由で正常な結果を返せないエラー状態であることを示す目的で、NaNがよく使われます。なお、ある値がNaNかどうかを判定したい場合は、比較演算子(===など)では必ずfalseになるため、Number.isNaN()メソッドやisNaN()関数を使用する
-
JavaScriptで数値がNaNかどうかを確認する方法|isNaN()とNumber.isNaN()の違いも解説
NaNはJavaScriptのグローバルプロパティの一つで、「Not-a-Number(非数)」を表す特殊な値です。無効な数値演算の結果など、有効な数値ではないことを示すために使われます。 構文 Number.NaN isNaN()メソッドでNaNを判定する ある値がNaNかどうかを調べるには、isNaN()メソッドまたはNumber.isNaN()メソッドを使用します。まずはisNaN()を使った基本的な確認方法の例を見てみましょう。 サンプルコード <!DOCTYPE html> <html> <body>