据我所知,在数学中,Infinity和NaN都是模糊的值。我们都知道:
console.log(NaN == NaN); //-> false而
console.log(Infinity==Infinity); //-> true我想知道为什么第二个代码的结果是true。我希望第二个结果应该是false,但事实并非如此。
你能帮帮我吗。我会很感激的。谢谢。
发布于 2016-12-07 19:35:48
除了其他答案:,因为规范是这么说的.
NaN是JavaScript中唯一不等于自身的值:
ECMAScript代码测试值X是否为NaN的可靠方法是表单X !== X的表达式。只有当X是NaN时,结果才会为真。
http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.2.4
发布于 2016-12-07 19:30:20
这就是为什么:
NaN将不平等(通过==、!=、===和!==)与任何其他值进行比较--包括其他NaN值。使用Number.isNaN()或isNaN()最清楚地确定一个值是否为NaN。或者执行一个自我比较: NaN,而只有NaN,将不等于它自己.
来源:对象/NaN
无穷大的初始值是Number.POSITIVE_INFINITY。无限值(正无穷大)比任何其他数都大。这个值在数学上表现为无穷大;例如,任何正数乘以无穷大都是无穷大,任何除以无穷大的数都是0。
来源:对象/无限
您还可能感兴趣的是使用Number的Number方法。
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false阅读Number.isFinite():对象/数目/isFinite
发布于 2016-12-07 19:29:54
因为处理器会这样解释它。JS中的大多数数学都遵循浮动数学算法规范 (处理器以非常具体的方式实现)。其中包括NaN !== NaN和Infinity === Infinity等。
https://stackoverflow.com/questions/41025686
复制相似问题