概要

引数として与えた数がNaNであり、且つNumber型かどうかの真偽値を返します。 オリジナルのisNaN()グローバル関数より堅牢なバージョンです。

構文

Number.isNaN(value)

引数

value
NaNかどうかテストされる値

戻り値

与えられた値が、NaNでありNumber型である場合にtrue、いずれかを満たさない場合はfalse

説明

=====の2つの等価演算子のせいで、NaN本当にNaNであるかどうか調べるとfalseと評価されてしまいます。そのため、Number.isNaN()関数が必要となります。この状況は、JavaScriptにおいてあり得る他のすべての値の比較と異なります。

isNaN() グローバル関数とは異なり、Number.isNaN() は強制的に引数が数値に変換される問題の影響をうけません。これは、通常NaNに変換されるが実際にはNaNではない値が、安全に渡されることを意味します。つまりこの関数は、Number型であり且つNaNである値が渡されたときのみ、trueを返すということです。

Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0)       // true

// たとえば、以下の値をisNaN()グローバル関数に渡すとtrueが返される
Number.isNaN("NaN");      // false
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN("blabla");   // false

// 以下は全てfalseを返す
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");

ポリフィル

次のコードが動作するのは、NaNがJavascriptで唯一自分自身と等しくない値だからです。

Number.isNaN = Number.isNaN || function(value) {
    return typeof value === "number" && value !== value;
}

仕様

仕様 状況 コメント

ECMAScript 2015 (6th Edition, ECMA-262)
Number.isnan の定義

標準 Initial definition.

ブラウザ実装状況

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 手助けしていただける場合は、こちらから!

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 25 15 (15) 未サポート (有) 未サポート
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 未サポート ? 15.0 (15) 未サポート 未サポート 未サポート

関連情報

ドキュメントのタグと貢献者

このページの貢献者: MaySoMusician, SphinxKnight, shide55
最終更新者: MaySoMusician,