首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么isNaN(“") (带空格的字符串)等于false?

为什么isNaN(“") (带空格的字符串)等于false?
EN

Stack Overflow用户
提问于 2009-05-05 15:21:15
回答 17查看 78.1K关注 0票数 179

在JavaScript中,为什么isNaN(" ")的计算结果为false,而isNaN(" x")的计算结果为true

我在一个文本输入字段上执行数值操作,并检查该字段是null""还是NaN。当有人在字段中输入几个空格时,我对这三个字段的验证都会失败,我很困惑为什么它能通过isNaN检查。

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2009-05-05 15:27:11

JavaScript将空字符串解释为0,这将导致isNAN测试失败。您可以先对字符串使用parseInt,这不会将空字符串转换为0。然后结果应该会导致isNAN失败。

票数 170
EN

Stack Overflow用户

发布于 2009-05-05 15:34:55

您可能会感到惊讶,也可能不会感到惊讶,但这里有一些测试代码,可以向您展示JavaScript引擎的怪异之处。

代码语言:javascript
复制
document.write(isNaN("")) // false
document.write(isNaN(" "))  // false
document.write(isNaN(0))  // false
document.write(isNaN(null)) // false
document.write(isNaN(false))  // false
document.write("" == false)  // true
document.write("" == 0)  // true
document.write(" " == 0)  // true
document.write(" " == false)  // true
document.write(0 == false) // true
document.write(" " == "") // false

所以这意味着

代码语言:javascript
复制
" " == 0 == false

代码语言:javascript
复制
"" == 0 == false

代码语言:javascript
复制
"" != " "

玩得开心:)

票数 85
EN

Stack Overflow用户

发布于 2009-05-05 15:32:01

为了更好地理解它,请打开第43页“应用于字符串类型的ToNumber”中的Ecma-Script spec pdf

如果字符串具有数字语法,可以包含任意数量的空格字符,则可以将其转换为number类型。空字符串的计算结果为0。此外,字符串“Infinity”应该给出

代码语言:javascript
复制
isNaN('Infinity'); // false
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/825402

复制
相关文章

相似问题

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