2016-12-07 31 views
2

据我所知,在数学上InfinityNaN都是模糊的值。 因为我们都知道:为什么JavaScript中的“Infinity == Infinity”成为现实?

console.log(NaN == NaN); //-> false 

console.log(Infinity==Infinity); //-> true 

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

您能否帮我解决。 我真的很感激它。谢谢。

+0

您的意思是'Infinity',不'infinity'? – Timo

+0

@Timo 是的,我的意思是“无限”。 – Rshin

+0

基本上,NaN表示数字操作的任何可能的非数字结果。 NaN不等于NaN更有意义,因为不是每个非数字结果都是逻辑等价的。 Infinity的定义更为清晰,虽然人们可能会争论无穷大的基数,但数字线极限的概念在数学上与自身相当。 – PMV

回答

-1

infinity被视为一个数值,因此infinity==infinity代表一个数值相等。在常见的数学中,无穷大无法与无穷大进行比较,在JavaScript中它可以!

NaN另一方面,是一种未定义的变量,而不是一个数字。因此,NaN之间的比较在逻辑上不具可比性。与NaN进行比较的正确方法是使用功能isNaN

实施例:

isNaN(NaN) // returns true

+0

这不是真的。实际上,'Infinity'和'NaN'都是数字和数字值。规范只是将'NaN'视为不等于自身(以及任何其他值)。 – Xufox

3

这就是为什么:

NaN的比较不等(通过==,=,===,和==!)为任何其他值 - - 包括另一个NaN值。使用Number.isNaN()或isNaN()可以最清楚地确定值是否为NaN。或者进行自我比较:NaN,只有NaN,会比较不等于自身。

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN

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

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity

中使用的NumberisFinite方法是什么,你可能也有兴趣:

Number.isFinite(Infinity); // false 
Number.isFinite(NaN);  // false 

上Number.isFinite()读了起来:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite

+1

这是最完整的答案,恕我直言,最好的解释。 – Yuck

相关问题