首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Infinity==Infinity中的“JavaScript”会变成真的?

为什么在Infinity==Infinity中的“JavaScript”会变成真的?
EN

Stack Overflow用户
提问于 2016-12-07 19:24:19
回答 4查看 817关注 0票数 2

据我所知,在数学中,InfinityNaN都是模糊的值。我们都知道:

代码语言:javascript
复制
console.log(NaN == NaN); //-> false

代码语言:javascript
复制
console.log(Infinity==Infinity); //-> true

我想知道为什么第二个代码的结果是true。我希望第二个结果应该是false,但事实并非如此。

你能帮帮我吗。我会很感激的。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2016-12-07 19:30:20

这就是为什么:

NaN将不平等(通过==、!=、===和!==)与任何其他值进行比较--包括其他NaN值。使用Number.isNaN()或isNaN()最清楚地确定一个值是否为NaN。或者执行一个自我比较: NaN,而只有NaN,将不等于它自己.

来源:对象/NaN

无穷大的初始值是Number.POSITIVE_INFINITY。无限值(正无穷大)比任何其他数都大。这个值在数学上表现为无穷大;例如,任何正数乘以无穷大都是无穷大,任何除以无穷大的数都是0。

来源:对象/无限

您还可能感兴趣的是使用NumberNumber方法。

代码语言:javascript
复制
Number.isFinite(Infinity);  // false
Number.isFinite(NaN);       // false

阅读Number.isFinite():对象/数目/isFinite

票数 3
EN

Stack Overflow用户

发布于 2016-12-07 19:29:54

因为处理器会这样解释它。JS中的大多数数学都遵循浮动数学算法规范 (处理器以非常具体的方式实现)。其中包括NaN !== NaNInfinity === Infinity等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41025686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档