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

2022-08-30 01:44:10

在 JavaScript 中,为什么 evaluate to 是 ,而是 evaluate to ?isNaN(" ")falseisNaN(" x")true

我正在对文本输入字段执行数值运算,并且我正在检查该字段是 、 、 还是 。当有人在字段中键入少量空格时,我的验证在所有三个上都失败了,我对为什么它通过检查感到困惑。null""NaNisNaN


答案 1

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


答案 2

你可能会觉得这令人惊讶,也可能不令人惊讶,但这里有一些测试代码来向你展示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

"" != " "

玩得开心:)