1. ホーム
  2. javascript

[解決済み】typeof NaNが'数字'を返すのはなぜ?

2022-04-23 07:37:33

質問

ちょっと気になったので。

というのはあまり論理的とは思えません。 typeof NaN は数字です。ちょうど NaN === NaN または NaN == NaN はfalseを返します、ちなみに。これはjavascriptの特殊性の一つなのでしょうか、それとも何か理由があるのでしょうか?

編集部:ご回答ありがとうございました。でも、頭を使うのは簡単なことではありません。回答やwikiを読んで、より理解できましたが、それでも、以下のような文章は

<ブロッククオート

NaNとの比較は、自分自身との比較であっても、常に順不同の結果を返します。比較述語にはシグナル型と非シグナル型があり、シグナル型はそのような比較のための無効な例外を知らせる。等式述語と不等式述語は非シグナリングであり、x = x が false を返すことは、x が静かな NaN であるかどうかをテストするために使用できる。

は、頭がクラクラしてきます。もし誰かがこれを人間(例えば数学者ではなく)に読みやすい言葉で訳してくれたら、ありがたいですね。

どのように解決するのですか?

Not a Number(数字ではない)という意味です。これはjavascriptの特殊性ではなく、コンピュータサイエンスの一般的な原理です。

から http://en.wikipedia.org/wiki/NaN :

には3種類の演算があります。 NaNを返すもの。

少なくとも1つのオペランドがNaNである演算

不定形形式

  • 区分0/0、∞/∞、∞/-∞、-∞/-∞、-∞/-∞の場合
  • 0×∞と0×-∞の掛け算
  • 1^∞の累乗
  • 加算∞+(-∞)、(-∞)+∞と同等の減算。

複雑な結果を伴う実数演算。

  • 負の数の平方根
  • 負の数の対数
  • 90度(またはπ/2ラジアン)の奇数倍の正接
  • の逆サインまたは逆コサイン。 1より大きい。

これらの値はすべて同じとは限りません。NaNの簡単なテストとしては value == value が偽であることを示します。