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

标签 javascript language-agnostic

据我所知,我已经意识到 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/

相关文章:

language-agnostic - 测试循环在顶部还是底部? (while vs. do while)

algorithm - 这个搜索算法是最优的吗?

language-agnostic - 非阻塞事件循环是如何工作的?

javascript - 问答游戏: The answers from an array are not properly coming up as correct or incorrect.

javascript - jQuery $().css ("content") 在 IE9 中返回字符串 "normal"

javascript - 如何在数组中保存相同的对象类型

language-agnostic - 差异 "conditionally safe"和 "thread safe"

javascript - 元素的外观仅在第二次单击时发生变化

JavaScript 正则表达式

language-agnostic - 选择特定数据库管理系统的因素有哪些?