我可以在我的代码中看到
console.log(Infinity/0) // Infinity
但是
console.log(Infinity/Infinity) // NaN
我可以假设原因在于数学,但我找不到与JS相关的任何解释。
有人能指点我一些文章吗?
答案 0 :(得分:4)
这里in the spec说:
除法的结果由IEEE 754算法的规范确定
将无穷大除以零会导致无穷大。该标志由上述规则确定。
和
用无穷大划分无穷大会导致NaN。
它符合规范,以及它的作用。它为什么这样做?阅读IEEE 754或此Wikipedia page on IEEE floating point。
答案 1 :(得分:0)
NaN
是一种特殊情况,它不等于任何不均匀的东西。当操作导致数学上未定义的值时,会使用它。
例如:
console.log(NaN === NaN); // false
console.log(0 / 0); // NaN
答案 2 :(得分:0)
Javascript遵循IEEE 754规范进行算术运算。 This table显示了Infinity算术规则。