NaN(「数値ではない」)をチェックするのは、JavaScriptで自己同等性をチェックするのと同じくらい簡単です。
JavaScriptでは、特別な値
NaN
(「数値ではない」を意味します)は、次のように表すことができない数学計算の結果を表すために使用されます意味のある数。 —JavaScriptのドリップに関するJoshuaClanton
特別な値NaN
は、
関数が失敗した場合(Math.sqrt(-37)
)、または数値を解析しようとしている関数が失敗した場合(parseInt("No integers here")
)。
NaN
は、他のすべての数学関数をポイズニングし、他のすべての数学操作を実行して、NaN
を生成します。
JavaScriptでは、0で除算すると
、NaN
ではありません:
この結果は、フローティングポイのせいですntは、Javascriptだけでなく、より一般的に定義されています。どうして?大まかに言うと、xがゼロに近づくと1/0が1 / xの限界になるためです。また、0/0には合理的な解釈がまったくないため、NaN
です。
とにかくNaNとは何ですか?
NaNは、グローバルオブジェクトのプロパティです。 NaNの初期値はNot-A-Numberです—Number.NaNの値と同じです。 —MDNドキュメント
NaNのチェックは思ったより難しい
残念ながら、:
-
typeof NaN
は「番号」です -
NaN
はJavaScriptの他のすべての値と等しくありません
次のコード例を確認してください:
では、数学を害するNaN
値があるかどうかを確認するにはどうすればよいでしょうか。
は、Object.is()
を使用する.toEqual()
メソッドとは異なります。
まとめるここで、一意の値を見つけるために使用されるJavaScript ES6 Set
は、NaN
のコピーを1つだけ保持することに注意してください。値。
番号についての一言.isNan()
最新のJavaScriptには、Number.isNan()
と呼ばれるNaN
をチェックする実装がすでにあります。そうなるでしょう。例:
注意してくださいNumber.isNan()
はグローバルなisNan()
関数とは異なります。これは古い実装であり、実際の目的は値を強制できないかどうかを確認することです。
完全を期すために、違いは次のとおりです。
-
isNaN()
はtrue
値が現在NaN
である場合、または数値に強制変換された後にNaN
になる場合。つまり、数値に強制できる値を受け取った場合、isNaN()はfalseを返します。 -
Number.isNaN()
は値が現在NaN
の場合のみ。
したがって、の場合は、自己平等を確認するのが最善です。