只是出于好奇.

typeof NaN是数字似乎不太符合逻辑.顺便说一下,就像NaN === NaNNaN == NaN返回false一样.这是javascript的特点之一吗,或者这是有原因的吗?

编辑:感谢您的回答.不过,让一个人四处走动并不是一件容易的事.阅读答案和维基让我理解得更多,但仍然有一句话是这样的

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

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

推荐答案

它的意思不是数字.这不是javascript的特性,而是常见的计算机科学原理.

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

有三种操作

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

不确定形式

  • 0/0分区,∞/∞, ∞/−∞, −∞/∞, 和−∞/−∞
  • 乘法0×∞和0×−∞
  • 权力1^∞
  • 补充∞ + (−∞), (−∞) + ∞ 和等价的减法.

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

  • 负数的平方根
  • 负数的对数
  • 90度(或π/2弧度)的奇数倍的正切
  • 小于的数的反正弦或余弦−1或

所有这些值可能都不相同.NaN的一个简单测试是测试value == value是否为假.

Javascript相关问答推荐

Webpack将懒惰加载的模块放入主块中

Math.random超出了最大调用堆栈

如果被1个Phaser JS抵消,我的倾斜碰撞

我无法使用tailwind-css和reactJS修改图像的位置

如何从对象嵌套数组的第二级对象中过滤出键

如何判断属于多个元素的属性是否具有多个值之一

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

警告!合同执行期间遇到错误[执行已恢复](Base Layer 2)

Plotly热图:在矩形上zoom 后将zoom 区域居中

google docs boldText直到按行执行应用脚本错误

将字符串UTC Date转换为ngx—counting leftTime配置值的数字

我的服务工作器没有连接到我的Chrome扩展中的内容脚本.我该怎么解决这个问题?

简单的PayPal按钮集成导致404错误

cypress中e2e测试上的Click()事件在Switch Element Plus组件上使用时不起作用

在forEach循环中获取目标而不是父对象的属性

用JS从平面文件构建树形 struct 的JSON

将相关数据组合到两个不同的数组中

更改agGRID/Reaction中的单元格格式

Reaction useState和useLoaderData的组合使用引发无限循环错误

重新呈现-react -筛选数据过多