当前位置: 首页 > 面试题库 >

为什么typeof NaN返回“数字”?

阴礼骞
2023-03-14
问题内容

只是出于好奇。

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

编辑:谢谢你的回答。但是,要让所有人适应现实并非易事。阅读答案和Wiki我了解得更多,但仍然有类似

与NaN的比较始终会返回无序结果,即使与自身进行比较也是如此。比较谓词是信令或非信令,信令版本表示此类比较的无效异常。相等和不相等谓词是无信号的,因此x
= x返回false可以用来测试x是否为安静的NaN。

只是让我的头旋转。如果有人可以用人类(而不是数学家)可读的语言来翻译它,我将不胜感激。


问题答案:

这意味着不是数字。它不是javascript的特性,而是通用的计算机科学原理。

从http://en.wikipedia.org/wiki/NaN:

返回NaN的操作有以下三种:

以NaN作为至少一个操作数的运算

不确定的形式

  • 除法0/0,∞/∞,∞/-∞,-∞/∞和-∞/-∞
  • 乘法0×∞和0×-∞
  • 幂1 ^∞
  • 加法器∞+(-∞),(-∞)+∞和等效减法。

具有复杂结果的实际操作:

  • 负数的平方根
  • 负数的对数
  • 90度(或π/ 2弧度)的奇数倍的切线
  • 小于-1或大于+1的数字的反正弦或余弦。

所有这些值可能不相同。对NaN的简单测试是测试value == value是否为假。



 类似资料:
  • 问题内容: 我是一名编程初学者,对函数的返回值有疑问。 我正在学习Java。 我已经附上了我的书中具有经典选择排序功能的代码。 现在显然来自本书的代码可以正常工作。但是,主要功能中的以下三行是我的问题的基础: int [] a = new int [] {1,9,2,8,3,7,4,6​​,5}; 排序(a); if(ascending(a))System.out.println(“ Works”

  • 问题内容: 命名函数的返回参数有什么好处? 问题答案: 命名它们有一些好处: 它用作文档。 它们会自动声明并初始化为零值。 如果您有多个返回站点,则更改函数的返回值并不需要全部更改,因为它只会显示“ return”。 还有缺点,主要是很容易通过声明相同名称的变量来意外地遮盖它们。 有效的Go中有一个关于命名结果参数的部分: 可以给Go函数的返回或结果“参数”指定名称,并将其用作常规变量,就像传入参

  • 问题内容: 这是简单的代码,我没有得到设置位图的结果,而是得到了null。谁能告诉我我在哪里犯错了? 更新 好的,所以我无法像我想的那样将文本转换为图像。这样呢 这会创建位图吗? 问题答案: 从文档中: 返回 解码的位图;如果无法解码图像,则 返回 null。 字符串“ test”中涉及的字节不是有效的位图,对吗? 如果将文本“ test”保存在名为or 等的文件中,并试图在Windows中打开它

  • 问题内容: 为什么要用Python返回? 我如何获得改组后的值而不是? 问题答案: 更改列表 到位 。 在原位更改结构的Python API方法通常返回,而不是修改后的数据结构。 如果要基于现有列表创建 新的 随机混排列表,并按顺序保留现有列表,则可以使用输入的完整长度: 您还可以将with用于排序键: 但这会调用排序(O(NlogN)操作),而采样到输入长度仅需要O(N)操作(与所使用的过程相同

  • 问题内容: 我正在使用a 检查我的哈希密码。我有PHP 5.5: 我上车了。我已经检查了posts的值和mysql user_password_hash返回。 我不知道为什么它返回假 有任何想法吗? 问题答案: 手册中的列长度可能是问题所在: 建议将结果存储在可扩展超过60个字符的数据库列中(255个字符是一个不错的选择)。 链接

  • 问题内容: 我已经存储了在该数据库中插入并插入记录的过程。我想获取最后插入的记录的ID。返回NULL并返回正确的ID,为什么会发生?如我所读,因此最好在表上有一些触发器的情况下使用。我可以使用吗?不论触发器如何,它是否都在表的范围内返回ID? 那么问题是什么以及使用什么呢? 已编辑 问题答案: 就像奥德(Oded)所说的那样,问题在于您在执行之前要先询问身份。 作为解决方案,最好尽可能地接近运行。