このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
Number.isNaN()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年9月.
Number.isNaN() は静的メソッドで、渡された値が数値型のNaN であるかどうかを判定します。入力が数値型でなかった場合はfalse を返します。元となるグローバルのisNaN() よりも堅牢な版です。
In this article
試してみましょう
function typeOfNaN(x) { if (Number.isNaN(x)) { return "Number NaN"; } if (isNaN(x)) { return "NaN"; }}console.log(typeOfNaN("100F"));// 予想される結果: "NaN"console.log(typeOfNaN(NaN));// 予想される結果: "Number NaN"構文
Number.isNaN(value)引数
返値
論理値で、与えられた値が数値で、かつ値がNaN である場合はtrue を返します。そうでなければfalse です。
解説
Number.isNaN() 関数は、NaN と等しいことをチェックする便利な方法を提供します。なお、NaN と等しいことは== 演算子でも=== 演算子でも検査できません。JavaScript の他のすべての値との比較とは異なり、一方のオペランドがNaN であれば、もう一方のオペランドがNaN であってもfalse と評価します。
JavaScript の有効なすべての値の中で、x !== x はNaN だけが true になりますので、Number.isNaN(x) はx !== x の検査を置き換えることができますが、後者の方が可読性が低くなります。
グローバルのisNaN() 関数とは異なり、Number.isNaN() は強制的に引数が数値に変換される問題の影響をうけません。これにより、通常NaN に変換されるが実際にはNaN ではない値が、安全に渡されます。つまりこの関数は、数値型であり、かつNaN である値が渡されたときのみ、true を返すということです。
例
>isNaN() の使用
Number.isNaN(NaN); // trueNumber.isNaN(Number.NaN); // trueNumber.isNaN(0 / 0); // trueNumber.isNaN(37); // falseNumber.isNaN() とグローバルの isNaN() の相違点
Number.isNaN() は引数を数値へ変換することを試みないので、数値でないものはすべてfalse を返します。以下のものはすべてfalse になります。
Number.isNaN("NaN");Number.isNaN(undefined);Number.isNaN({});Number.isNaN("blabla");Number.isNaN(true);Number.isNaN(null);Number.isNaN("37");Number.isNaN("37.37");Number.isNaN("");Number.isNaN(" ");グローバルのisNaN() は、引数を数値に変換します。
isNaN("NaN"); // trueisNaN(undefined); // trueisNaN({}); // trueisNaN("blabla"); // trueisNaN(true); // false、これは 1 に変換されるisNaN(null); // false、これは 0 に変換されるisNaN("37"); // false、これは 37 に変換されるisNaN("37.37"); // false、これは 37.37 に変換されるisNaN(""); // false、これは 0 に変換されるisNaN(" "); // false、これは 0 に変換される仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-number.isnan> |