Number.isNaN()
試してみましょう
構文
Number.isNaN(value)
引数
value
-
NaN
かどうかテストされる値です。
返値
解説
==
と ===
の等価演算子ではどちらも、 NaN
が NaN
であるかどうかを検査すると false
と評価されてしまうため、 Number.isNaN()
関数が必要となります。この状況は、 JavaScript においてあり得る他のすべての値の比較と異なります。
グローバルの isNaN()
関数とは異なり、 Number.isNaN()
は強制的に引数が数値に変換される問題の影響をうけません。これは、通常 NaN
に変換されるが実際には NaN
ではない値が、安全に渡されることを意味します。つまりこの関数は、数値型であり、かつ NaN
である値が渡されたときのみ、 true
を返すということです。
例
isNaN の使用
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 isNaN(input) {
return typeof input === 'number' && input !== input;
}
仕様書
Specification |
---|
ECMAScript Language Specification # sec-number.isnan |
ブラウザーの互換性
BCD tables only load in the browser