ではJavaScript
、通常、isNaN()
値が であるかどうかを確認するために使用しますNaN(Not-a-Number)
。ただし、ES6 で導入されたNumber.isNaN()
メソッドは似ていますが、それらの間には微妙な違いがあり、それについてこの記事で明らかにします。
1.isNaN()
はグローバル関数ですが、 の静的メソッドNumber.isNaN()
です。Number
まずは基本的な使い方を見てみましょう。
// 代码
isNaN(NaN); // true
isNaN("Hello"); // true
Number.isNaN(NaN); // true
Number.isNaN("Hello"); // false
上に示したように、isNaN()
関数は引数を数値に変換しようとし、結果が であるかどうかを確認しますNaN
。isNaN("Hello") が を返すのはこのためですtrue
。数値以外の文字列を数値に変換しようとすると が返されるからですNaN
。
対照的に、Number.isNaN()
引数を数値にキャストする試みは行われません。パラメータ自体が の場合にのみ返されNaN
ますtrue
。
2.isNaN()
数値型以外のパラメータでは問題が発生します。
これはisNaN()
よくある落とし穴です。
// 代码
isNaN("123"); // false
この例では、数値として解釈できない場合でも文字列isNaN("123")
が返されます。これは、最初に文字列を数値に変換しようとし、数値に変換できるため、 を返すためです。false
"123"
isNaN()
"123"
123
false
ただし、Number.isNaN()
数値以外のパラメーターについては誤解を招くことはありません。
// 代码
Number.isNaN("123"); // false
3. 利用シーン
isNaN()
値が であるかどうかを確認する必要がある場合、NaN
および数値以外の値を として扱う必要がある場合に使用しますNaN
。数値以外の値を として扱わず、値が であるかどうかを厳密にチェックする必要がある場合に
使用します。Number.isNaN()
NaN
NaN
要約する
isNaN()
どちらNumber.isNaN()
にもそれぞれの役割がありますが、両者の微妙な違いに注意してください。適切な関数の選択はユースケースによって異なりますが、値が NaN であるかどうかをより正確に確認する必要がある場合は、Number.isNaN()
この関数を選択することをお勧めします。これは、数値以外の値も同様に処理したい場合にNaN
使用できますisNaN()
。
JavaScript
これらの違いを理解すると、より信頼性の高いコードを作成し、型変換によって引き起こされる予期しないエラーを回避するのに役立ちます。