据我所知,我已经意识到 NaN
的类型是数字的这种特性。现在,some people竭尽全力将其捍卫为“通用计算机科学原则”,但最终我仍然感觉不对(只是因为在 numeric types 部分下定义的内容不符合要求一个数字)。
无论哪种方式,这让我想知道,是否有任何典型情况可以使代码更易于阅读?通常它只是意味着你必须添加一个额外的检查它是一个数字 and 而不是 NaN
这是相当麻烦的。在我的一生中,我不记得曾经遇到过我想要 typeof NaN
返回number
的情况。那么,我错过了什么吗?还是真的像看起来那么糟糕?
最佳答案
在所有 类型的代码中。常量 NaN
明确属于“number”类型。值 NaN
应该not 理解口语短语“不是数字”的意思。相反,它是 IEEE 浮点规范中的一个特定术语,描述了一组值,其位排列使得规范规则无法对这些值进行有意义的解释。因此,它们是数字,但它们“不是数字”。
它确实让事情变得有些奇怪,但它在某种程度上与您遇到的处理字符串和空字符串的方式没有太大区别。它只是您(可能)需要担心的原始类型的值。通常,从某些计算中得到 NaN
可能意味着您的计算需要在上游某处进行有效性测试。
现在, 有点不稳定的是 JavaScript 使用 NaN
来报告无法转换为数字的非数字值。在这种情况下抛出异常可能会更健壮并且在语义上更正确,但在这一点上这是桥下的水。
关于javascript - 在什么样的代码中 `typeof NaN` 是 'number' 才有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955850/