gpt4 book ai didi

javascript - 为什么 typeof NaN 返回 'number' ?

转载 作者:IT老高 更新时间:2023-10-28 13:18:37 25 4
gpt4 key购买 nike

只是出于好奇。

typeof NaN 是数字似乎不太合乎逻辑。顺便说一下,就像 NaN === NaNNaN == NaN 返回 false 一样。这是 JavaScript 的特性之一,还是有原因?

编辑:感谢您的回答。不过,要吸引人并不是一件容易的事。阅读答案和维基,我理解得更多,但仍然是这样的句子

A comparison with a NaN always returns an unordered result even when comparing with itself. The comparison predicates are either signaling or non-signaling, the signaling versions signal an invalid exception for such comparisons. The equality and inequality predicates are non-signaling so x = x returning false can be used to test if x is a quiet NaN.

只是让我头晕目眩。如果有人可以将其翻译成人类(而不是数学家)可读的语言,我将不胜感激。

最佳答案

好吧,将所谓的“非数字”视为数字似乎有点奇怪,但 NaN 仍然是数字 type,尽管事实如此: -)

NaN 只是表示特定值不能在数字类型的限制内表示(尽管可以说所有数字都必须四舍五入以适应,但 NaN 是一个特例)。

一个特定的 NaN 不被认为等于另一个 NaN,因为它们可能是不同的值。但是,NaN 仍然是数字类型,就像 2718 或 31415 一样。


至于你更新的问题,用外行的话来解释:

A comparison with a NaN always returns an unordered result even when comparing with itself. The comparison predicates are either signalling or non-signalling, the signalling versions signal an invalid exception for such comparisons. The equality and inequality predicates are non-signalling so x = x returning false can be used to test if x is a quiet NaN.

所有这些意思是(分解成部分):

A comparison with a NaN always returns an unordered result even when comparing with itself.

基本上,一个NaN不等于任何其他数字,包括另一个NaN,甚至包括本身

The comparison predicates are either signalling or non-signalling, the signalling versions signal an invalid exception for such comparisons.

尝试在 NaN 和另一个数字之间进行比较(小于、大于等)操作可能会导致抛出异常(信号)或结果为 false (无信号或安静)。

The equality and inequality predicates are non-signalling so x = x returning false can be used to test if x is a quiet NaN.

相等测试(等于,不等于)永远不会发出信号,因此使用它们不会导致异常。如果您有一个常规数字 x,那么 x == x 将始终为真。如果 xNaN,则 x == x 将始终为 false。它为您提供了一种轻松(安静地)检测 NaN 的方法。

关于javascript - 为什么 typeof NaN 返回 'number' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2801601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com