我正在研究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'
为Not-a-Number
。但是只要它返回true
,它就会返回false
,并且只要它返回false
,它就会返回true
。您还可以看到我测试过以确保NaN
实际上不是字符串。
上面你可以看到返回值是相同的,但这次是正确的。
我错过了什么吗?或者我应该以不同的方式做到这一点?
答案 0 :(得分:7)
NaN不是你可以比较的东西。 你需要使用:
isNaN(parseInt('asf')) // true
isNaN(parseInt('123')) // false
答案 1 :(得分:1)
检查值是否为数字的最佳解决方案是使用isNaN()。