言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. Number.isNaN() / isFinite() / isInteger()

Number.isNaN() / isFinite() / isInteger() 対応: ES6(ECMAScript 2015)

値が数値として有効かどうかを判定するための関数です。NaN判定、有限数判定、整数判定の3つのメソッドが用意されています。

構文

// 値がNaNかどうかを判定します。
var result = Number.isNaN(値);

// 値が有限数かどうかを判定します。
var result = Number.isFinite(値);

// 値が整数かどうかを判定します。
var result = Number.isInteger(値);

メソッド一覧

メソッド概要
Number.isNaN(値)値がNaNであるかどうかを判定します。NaNであれば『true』、それ以外は『false』を返します。
Number.isFinite(値)値が有限数であるかどうかを判定します。Infinity、-Infinity、NaNのいずれでもない数値であれば『true』を返します。
Number.isInteger(値)値が整数であるかどうかを判定します。小数部分がない数値であれば『true』を返します。

サンプルコード

// Number.isNaN() はNaNだけをtrueと判定します。
console.log(Number.isNaN(NaN)); // 『true』と出力されます。
console.log(Number.isNaN(123)); // 『false』と出力されます。
console.log(Number.isNaN("abc")); // 『false』と出力されます。文字列はNaNではありません。
console.log(Number.isNaN(undefined)); // 『false』と出力されます。

// NaNは計算に失敗した場合に発生します。
var result = 0 / 0;
console.log(Number.isNaN(result)); // 『true』と出力されます。

// Number.isFinite() は有限数かどうかを判定します。
console.log(Number.isFinite(42)); // 『true』と出力されます。
console.log(Number.isFinite(3.14)); // 『true』と出力されます。
console.log(Number.isFinite(Infinity)); // 『false』と出力されます。
console.log(Number.isFinite(NaN)); // 『false』と出力されます。
console.log(Number.isFinite("42")); // 『false』と出力されます。文字列は数値型ではありません。

// Number.isInteger() は整数かどうかを判定します。
console.log(Number.isInteger(10)); // 『true』と出力されます。
console.log(Number.isInteger(3.14)); // 『false』と出力されます。
console.log(Number.isInteger(10.0)); // 『true』と出力されます。小数部分が0なので整数と判定されます。

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

グローバル関数の『isNaN()』と『Number.isNaN()』は動作が異なります。『isNaN()』は引数を数値に変換してからNaN判定を行うため、文字列なども『true』と判定されてしまいます。より正確な判定には『Number.isNaN()』を使用してください。

// グローバルのisNaN() は引数を数値に変換してから判定します。
console.log(isNaN("abc")); // 『true』と出力されます。Number("abc")がNaNになるためです。
console.log(isNaN("123")); // 『false』と出力されます。Number("123")が123になるためです。

// Number.isNaN() は型変換を行わず、NaN自体であるかを判定します。
console.log(Number.isNaN("abc")); // 『false』と出力されます。文字列はNaNそのものではありません。

概要

『Number.isNaN()』『Number.isFinite()』『Number.isInteger()』はES6で追加された数値判定メソッドです。いずれも型変換を行わないため、渡された値が数値型でなければ常に『false』を返します。この動作により、グローバル関数の『isNaN()』や『isFinite()』よりも予測しやすい結果が得られます。

『NaN』はJavaScriptにおける特殊な値で、数値として無効な計算を行った場合に発生します。NaNの特徴として、自分自身と等しくない唯一の値であるという性質があります。そのため『NaN === NaN』は『false』になり、等価演算子ではNaN判定ができません。

実用的な場面として、ユーザーが入力した値を数値に変換した後で『Number.isNaN()』や『Number.isFinite()』を使って有効な数値かどうかを確認する、というパターンがよく使われます。

対応ブラウザ

Chrome Chrome
49 以降
24 以前 ×
Firefox Firefox
57 以降
14 以前 ×
Safari Safari
18 以降
8 以前 ×
Edge Edge
80 以降
11 以前 ×
IE IE
11 ×
全バージョンで非対応
Opera Opera
48 以降
14 以前 ×
iOS Safari iOS Safari
18 以降
8 以前 ×
Android Browser Android Browser
37 以降
4 以前 ×
Chrome Android Chrome Android
36 以降
24 以前 ×
Firefox Android Firefox Android
79 以降
14 以前 ×

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。