parseInt()检查NaN无法正常工作

Jak*_*r00 -1 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 number
        val = parseInt(val);
    }
}
Run Code Online (Sandbox Code Playgroud)

但由于某些原因,同时测试,即使val是与文本字符串,它仍然会返回parseInt(val) !== NaN作为true.我后来使用Chrome控制台进行了测试,这就是我得到的:

回报不正确

如你所见,'asf'Not-a-Number.但无论它返回什么地方true,它都应该返回false,无论它返回什么地方false,它都应该返回true.您还可以看到我测试过以确保NaN其实际上不是字符串.

正确的回报

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

我错过了什么吗?或者我应该采用不同的方式做到这一点?

Nec*_*sky 9

NaN不是你可以比较的东西.你需要使用:

isNaN(parseInt('asf')) // true

isNaN(parseInt('123')) // false