「数値ではない」(NaN) とラベル付けされた値が、次の関数によって数値として扱われるのは逆説的に見えるかもしれません。演算子の種類。ただし、この動作は NaN の根本的な性質に由来しています。
まず、NaN は、その名前に反して数値型です。無効または未定義の数値を表します。すべての数値は近似値であり、制限がありますが、NaN は正確に表現できない数値の特定のインスタンスです。
第 2 に、NaN は、それ自体を含む他の値と等しくありません。これは、NaN が特定の値ではなく、無効または未定義の結果のプレースホルダーであるためです。したがって、NaN をそれ自体または他の値と比較すると、常に false が返されます。
NaN との比較は、常に順序付けされていない結果を返します。
NaN は、それ自体を含め、どの数値とも等しくありません。これは、NaN をそれ自体と比較しても false になることを意味します。
シグナリング比較述語と非シグナリング比較述語:
未満またはより大きいなどの一部の比較演算、NaN を処理する場合、例外をスローするか false を返すことができます。これらの操作は、シグナリング述語および非シグナリング述語として知られています。
等価および不等式を使用した NaN のテスト:
等価および不等式のテストは非シグナリングであるため、例外をスローしません。通常の数値がそれ自体と等しいかどうかをテストすると、常に true が返されます。ただし、NaN がそれ自体と等しいかどうかテストされると、常に false が返されます。これは、NaN 値を「静かに」検出する便利な方法を提供します。
以上が「typeof NaN」が「数値」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。