JSで数値タイプを判定する方法
JavaScriptで変数のデータ型を扱う際、それが数値かどうかを正確に判定する必要がある場合があります。 数値かどうかを判断する方法はいくつかありますが、今回は `isNaN()` 関数に焦点を当てて解説します。
isNaN() 関数
`isNaN()` 関数は、JavaScript に組み込まれている関数です。`isNaN()` は、引数が数値でない場合に `true` を返し、数値の場合は `false` を返します。 これによって、特定の値が数値か否かを判定することができます。 なお、NaN とは Not a Number(非数)を表します。
構文
isNaN(value)
パラメータ
パラメータ | 説明 |
---|---|
value | 判定対象の値。 |
戻り値
戻り値 | 説明 |
---|---|
true | value が数値に変換できない場合。 |
false | value が数値に変換できる場合。 |
使用例
isNaN(123); // false
isNaN(-1.23); // false
isNaN('123'); // false (文字列は数値に変換されるため)
isNaN('hello'); // true
isNaN(true); // false (ブーリアン値は数値に変換されるため)
isNaN(undefined); // true
isNaN(null); // false (nullは数値の0に変換されるため)
isNaN(NaN); // true
注意点
`isNaN()` 関数は、あくまで引数が数値に変換できるかどうかを判定する関数です。 厳密に数値型かどうかを判定したい場合は、`typeof` 演算子と組み合わせる必要があります。
typeof 123 === 'number'; // true
typeof '123' === 'number'; // false
参考資料
数値判定に関するQA
Q1: `isNaN()` と `typeof` 演算子の使い分けは?
A1: `isNaN()` は値が数値に変換できるかどうかを判定し、`typeof` はデータ型を判定します。 厳密に数値型かどうかを判定したい場合は `typeof` を、そうでない場合は `isNaN()` を使用します。
Q2: `null` が `isNaN()` で `false` となるのはなぜ?
A2: `isNaN()` は内部で引数を数値に変換しようとします。 `null` は数値の `0` に変換されるため、`isNaN(null)` は `false` となります。
Q3: `isNaN()` 以外の数値判定方法は?
A3: `Number.isFinite()` や `typeof` 演算子と比較演算子を組み合わせる方法があります。 それぞれの方法の特徴を理解して使い分けましょう。
その他の参考記事:JavaScriptの型変換