Javascript parseInt()检查是否存在NaN isn';t工作不正常

Javascript parseInt()检查是否存在NaN isn';t工作不正常,javascript,Javascript,我正在开发一个jQuery插件,我需要确保这个值是一个数字,或者是一个只有一个数字的字符串。为此,我编写了以下代码,其中val是一个变量,可能是数字,也可能不是数字 if (typeof val !== 'number') {//if "val" isn't a number if (typeof val === 'string' && parseInt(val) !== NaN) {//see if "val" is a string with only a numbe

我正在开发一个jQuery插件,我需要确保这个值是一个数字,或者是一个只有一个数字的字符串。为此,我编写了以下代码,其中
val
是一个变量,可能是数字,也可能不是数字

if (typeof val !== 'number') {//if "val" isn't a number
    if (typeof val === 'string' && parseInt(val) !== NaN) {//see if "val" is a string with only a number
        val = parseInt(val);
    }
}
但是由于某种原因,在测试时,即使
val
是一个包含文本的字符串,它仍然返回
parseInt(val)!=NaN
true
。我后来用Chrome控制台进行了测试,结果如下:

正如您所看到的,
'asf'
而不是-a-Number
。但是无论它在哪里返回
true
,它都应该返回
false
,无论它在哪里返回
false
,它都应该返回
true
。您还可以看到,我进行了测试,以确保
NaN
实际上不是字符串

上面可以看到返回值是相同的,但这次是正确的


我错过什么了吗?或者有没有其他的方法可以让我做到这一点?

你无法与之相比。 您需要使用:

isNaN(parseInt('asf')//true


isNaN(parseInt('123')//false

检查值是否为数字的最佳解决方案是使用。

您有没有研究过?@Evilzebra我不知道这个存在。非常感谢。检查它的方法是
isNaN()
method也是相关的,为什么我希望你的声誉随着这个简单的答案快速增长。令人惊叹的恭喜。