首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NaN是否等于NaN?

NaN是否等于NaN?
EN

Stack Overflow用户
提问于 2011-08-08 08:15:35
回答 8查看 48.6K关注 0票数 49
代码语言:javascript
复制
parseFloat("NaN")

返回"NaN",但是

代码语言:javascript
复制
parseFloat("NaN") == "NaN"

返回false。现在,这可能是一件好事,它返回false,但我不明白这是怎么回事。JavaScript的创建者只是把它当作一个特例吗?否则我就不能理解这是怎么返回false的。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-08-08 08:17:14

当JavaScript函数返回NaN时,这不是文字字符串,而是全局空间中的对象属性。您不能将其与字符串"NaN"进行比较。

请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/NaN

票数 36
EN

Stack Overflow用户

发布于 2012-09-28 03:05:09

更新2

这是为了进一步增强===检查。这个新函数的一个好处是Object.is(NaN, NaN)现在将返回true。如果您是able to utilize ECMAScript 6,那么这将是对您来说最具可读性和一致性的解决方案。

原始

代码语言:javascript
复制
isNaN(parseInt(variable))

如果您正在检查的内容是NaN,则该函数将返回true。此方法内置于JavaScript规范中。

使用jQuery的

jQuery内置了自己的isNaN函数,最初是为了帮助应对浏览器之间的一些差异,并添加了一些额外的检查,以便可以使用它们的版本,而不是VanillaJS中的版本。

在jQuery 1.7之后,他们将此函数更改为$.isNumeric()

Documentation of the switch

如果你关注一下this Stack Overflow question,你会发现很多时候isNaN()会返回一个直观上被认为是“不正确”的答案,但根据规范是正确的。

避免使用普通isNaN()的一个重要原因是null将返回false,这会让您认为它是一个数字。但是,jQuery函数涵盖的直观结果范围要大得多。

从他们的文档中:

从jQuery 3.0开始,如果参数是

类型,或者如果参数是string类型并且可以强制为有限数,则$.isNumeric()返回true。在所有其他情况下,它返回false。

票数 38
EN

Stack Overflow用户

发布于 2011-08-08 08:17:15

这是一个特例,NaN是Javascript中唯一不等于它自己的东西。

尽管关于字符串与NaN对象的其他答案也是正确的。

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

https://stackoverflow.com/questions/6976721

复制
相关文章

相似问题

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