首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >isNaN(“你好世界!”)vs isNaN('')

isNaN(“你好世界!”)vs isNaN('')
EN

Stack Overflow用户
提问于 2020-09-09 06:17:23
回答 4查看 232关注 0票数 2

我想知道为什么以下程序的行为不同,尽管数据类型是一个字符串,

代码语言:javascript
复制
console.log(isNaN('Hello World!'))

console.log(isNaN(''))

控制台显示以下结果,

代码语言:javascript
复制
true

false

我希望这两个结果都是真的。

任何人都能帮助我理解这件基本的事情。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-09-09 06:21:41

根据文档

自从最早版本的isNaN函数规范以来,它对于非数值参数的行为一直令人困惑。当isNaN函数的参数不是Number类型时,该值首先被胁迫为一个数字。然后对结果值进行测试,以确定其是否为NaN。因此,对于非数字,当被胁迫为数字类型时,会产生一个有效的非NaN数值(特别是空字符串和布尔基元,它们在胁迫时给出数值为0或1),"false“返回的值可能是意外的;例如,空字符串肯定是”不是数字“。这种混淆源于这样一个事实,即“不是数字”这个词对于表示为IEEE-754浮点值的数字有一个特定的含义。这个函数应该被解释为回答以下问题:“当胁迫到一个数值时,这个值是IEEE-754‘而不是A’值吗?”

您可能希望使用Number.isNaN而不是isNan,它的行为有所不同(我提供的链接中也提到了这一点)。

票数 4
EN

Stack Overflow用户

发布于 2020-09-09 06:24:17

代码语言:javascript
复制
console.log(isNaN('')); 
// false: the empty string is converted to 0 which is not NaN

console.log(isNaN(' ')); 
// false: a string with spaces is converted to 0 which is not NaN

欲知更多详情,请参阅官方文件:对象/isNaN

票数 4
EN

Stack Overflow用户

发布于 2020-09-09 06:36:51

所示

如果值等于isNanN(),则此函数( NaN ())返回true。否则它会返回

全局isNaN()函数,将测试的值转换为一个数字,然后测试它。

当您将给定的值转换为数字时,您将获得以下内容

代码语言:javascript
复制
Number("") = 0 
Number("Hello World!") = NaN

这解释了获得的结果。

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

https://stackoverflow.com/questions/63805757

复制
相关文章

相似问题

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