JavaScript である値が数値かどうかを判定する場合は、isNaN() 関数を使用します。ここでは、isNaN() 関数の使い方と、使う上での注意点について説明します。
isNaN() 関数の使い方
isNaN() 関数は、JavaScript に組み込まれている関数です。isNaN() は、引数が数値でない場合に true を返し、数値の場合は false を返します。これによって、特定の値が数値か否かを判定することができます。なお、NaN とは Not a Number(非数)を表します。
以下に使用例を示します。
1 2 3 4 5 6 7 8 9 10 11 12 |
isNaN('abc'); // true (数値ではない) isNaN(123); // false(数値) isNaN(012); // false(8進リテラル) isNaN(0x12); // false(16進リテラル) isNaN('123'); // false(判定前に数値に変換される) isNaN('012'); // false(同上) isNaN('0x12'); // false(同上) isNaN(true); // false(同上、trueは1に変換される) isNaN(false); // false(同上、falseは0に変換される) isNaN('true'); // true(数値ではない) isNaN(undefined); // true(数値ではない) isNaN(null); // false |
上の例では、指定した引数が数値である場合だけでなく、文字列だった場合でも isNaN() は false を返し数値として判定されています。この理由に関しては以下で説明します。
isNaN() 関数を使う際の注意点
isNaN() 関数は、関数実行時に引数に対して Number() 関数と等価の型変換を行います。そのため、引数が '123' のような文字列だった場合でも、数値の 123 に変換した後に判定を行うため、falseが返されます。同様に、true や false のブーリアン値もそれぞれ 1 と 0 に変換された後に判定されるため、false が返されます。
サンプルプログラム
次のサンプルは、テキストボックスに入力された値が数値か否かを判定し、アラートを表示するプログラムです。
HTML
1 2 3 |
数値を入力して下さい: <input type="text" id="input01"> <input type="button" value="check" onclick="check();"> |
JavaScript
1 2 3 4 5 6 7 8 |
var check = function() { var num = document.getElementById('input01').value; if(!isNaN(num)){ alert("入力された数は" + num + "です。"); } else { alert("数値以外が入力されています"); } } |
isNaN() 関数は数値ではない場合に true を返すので、注意して使用してください。