在JavaScript中,为什么isNaN(" ")
的计算结果为false
,而isNaN(" x")
的计算结果为true
我在一个文本输入字段上执行数值操作,并检查该字段是null
、""
还是NaN
。当有人在字段中输入几个空格时,我对这三个字段的验证都会失败,我很困惑为什么它能通过isNaN
检查。
发布于 2009-05-05 15:27:11
JavaScript将空字符串解释为0,这将导致isNAN测试失败。您可以先对字符串使用parseInt,这不会将空字符串转换为0。然后结果应该会导致isNAN失败。
发布于 2009-05-05 15:34:55
您可能会感到惊讶,也可能不会感到惊讶,但这里有一些测试代码,可以向您展示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
所以这意味着
" " == 0 == false
和
"" == 0 == false
但
"" != " "
玩得开心:)
发布于 2009-05-05 15:32:01
为了更好地理解它,请打开第43页“应用于字符串类型的ToNumber”中的Ecma-Script spec pdf
如果字符串具有数字语法,可以包含任意数量的空格字符,则可以将其转换为number类型。空字符串的计算结果为0。此外,字符串“Infinity”应该给出
isNaN('Infinity'); // false
https://stackoverflow.com/questions/825402
复制相似问题