JavaScriptでNaNをチェックする方法

NaN(「数値ではない」)をチェックするのは、JavaScriptで自己同等性をチェックするのと同じくらい簡単です。

DerekAustin博士🥳

フォロー

2019年9月15日・4分読み取り

UnsplashのRattapによる写真

JavaScriptでは、特別な値NaN (「数値ではない」を意味します)は、次のように表すことができない数学計算の結果を表すために使用されます意味のある数。 —JavaScriptのドリップに関するJoshuaClanton

特別な値NaNは、

関数が失敗した場合(Math.sqrt(-37))、または数値を解析しようとしている関数が失敗した場合(parseInt("No integers here"))。

NaNは、他のすべての数学関数をポイズニングし、他のすべての数学操作を実行して、NaNを生成します。

UnsplashのChrisBarbalisによる写真

JavaScriptでは、0で除算すると

NaNではありません:

この結果は、フローティングポイのせいですntは、Javascriptだけでなく、より一般的に定義されています。どうして?大まかに言うと、xがゼロに近づくと1/0が1 / xの限界になるためです。また、0/0には合理的な解釈がまったくないため、NaNです。

とにかくNaNとは何ですか?

NaNは、グローバルオブジェクトのプロパティです。 NaNの初期値はNot-A-Numberです—Number.NaNの値と同じです。 —MDNドキュメント

写真提供:Andrew Buchanan on Unsplash

NaNのチェックは思ったより難しい

残念ながら、:

  1. typeof NaNは「番号」です
  2. NaNはJavaScriptの他のすべての値と等しくありません

次のコード例を確認してください:

では、数学を害するNaN値があるかどうかを確認するにはどうすればよいでしょうか。

写真:WolfgangRottmannによるUnsplash

自己平等でNaNをチェック

「NaN、そしてNaNだけがそれ自体と等しくないと比較します。」 —MDNドキュメント

JavaScriptで、NaNを確認する最良の方法は、自己同等性を確認することです。組み込みの等式演算子==または===のいずれかを使用します。

NaNはそれ自体と同じではありません。NaN != NaNは常にtrueを返します。

もちろん、コード内のこのようなNaNテストは常に読み取り可能であるとは限らないため、コメントを使用するか、ラッパー関数を作成することをお勧めします。

または!==NaNを確認します。

UnsplashのErikMcleanによる写真

Object.is()でNaNを確認します

Object.is()メソッドは、2つの値が同じ値であるかどうかを判別します。” —MDNドキュメント

厳密および緩い等式演算子とは異なり、ES6ヘルパーメソッドObject.is()は考慮しませんNaNがそれ自体と等しい場合:

したがって、===Object.is()に交換しても、心配する必要はありません。 NaNの特別な方法の確認について。問題は解決しました!

JavaScriptでObject.is()を使用する方法について別の記事で書きました:

用語に関する1つのメモ— Object.is()はグローバルObjectクラスの関数であり、==または===

たとえば、Jestテストでは、iv id =を使用するメソッド.toBe() “5b1ff5250c”>

は、Object.is()を使用する.toEqual()メソッドとは異なります。

まとめるここで、一意の値を見つけるために使用されるJavaScript ES6 Setは、NaNのコピーを1つだけ保持することに注意してください。値。

写真提供:Tony Hand on Unsplash

番号についての一言.isNan()

最新のJavaScriptには、Number.isNan()と呼ばれるNaNをチェックする実装がすでにあります。そうなるでしょう。例:

注意してくださいNumber.isNan()はグローバルなisNan()関数とは異なります。これは古い実装であり、実際の目的は値を強制できないかどうかを確認することです。

完全を期すために、違いは次のとおりです。

  • isNaN()true値が現在NaNである場合、または数値に強制変換された後にNaNになる場合。つまり、数値に強制できる値を受け取った場合、isNaN()はfalseを返します。
  • Number.isNaN()は値が現在NaNの場合のみ。

したがって、の場合は、自己平等を確認するのが最善です。

写真提供:Nick Hillier onスプラッシュを解除

Leave a Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です