在什么样的代码中,`typeof NaN` 是 'number' 才有意义

In what kind of code does it makes sense that `typeof NaN` is 'number'

据我所知,我已经意识到 NaN 的类型是数字的这种特性。现在,some people 竭尽全力将其作为 'common computer science principle' 进行辩护,但最终我还是觉得不对(只是因为在 numeric types[ 部分定义了某些内容) =23=] 不会成为数字)。

无论哪种方式,这让我想知道,是否有任何典型情况可以使代码更易于阅读?通常它只是意味着你必须添加额外检查它是一个数字 而不是 NaN 这是相当麻烦的。在我的一生中,我不记得曾经 运行 遇到过我 想要 typeof NaN 到 return number 的情况.那么,我错过了什么吗?还是真的像看起来那么糟糕?

所有种代码。常量 NaN 明确属于 "number" 类型。值 NaN 应该 而不是 来表示口语短语 "not a number" 的意思。相反,它是 IEEE 浮点规范中的一个特定术语,描述了一组值,其位排列使得规范规则无法对这些值进行有意义的解释。因此,它们是 数字 但它们是 "not a number" 数字。

它确实让事情变得有些奇怪,但它在某种程度上与您 运行 处理字符串和空字符串的方式没有太大区别。它只是您(可能)需要担心的原始类型的值。通常,从某些计算中获得 NaN 可能意味着您的计算需要在上游某处进行有效性测试。

现在, 有点不稳定的一点是 JavaScript 使用 NaN 来报告无法转换的非数字值到数字。在这种情况下抛出异常可能会更健壮并且在语义上更正确,但在这一点上这是桥下的水。