【发布时间】:2016-05-18 11:26:39
【问题描述】:
我正在开发一个 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 是带有文本的字符串,它仍然会以true 的形式返回parseInt(val) !== NaN。后来我用 Chrome 控制台进行了测试,这就是我得到的:
如您所见,'asf' 是Not-a-Number。但是无论它返回true,它应该返回false,无论它返回false,它应该返回true。您还可以看到,我进行了测试以确保 NaN 实际上不是字符串。
上面你可以看到返回值是一样的,但是这次是正确的。
我错过了什么吗?或者我应该以不同的方式做到这一点?
【问题讨论】:
-
你看过isNaN()吗?
-
@Evilzebra 我不知道这存在。谢谢!
-
查看方式为
isNaN()方法 -
也相关,为什么NaN !== NaN
标签: javascript