JSで数値型かどうか判定するには?

JSで数値タイプを判定する方法

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の型変換