关于JavaScript isNaN的一些注意事项
isNaN()如果您正在查看表单输入或类似输入,则该函数(NaN代表非数字)很有用,用于检测值是否不是数字。例如,以下代码显示了isNaN()两个变量的输出。
var number42 = "42"; var wibble = "wibble"; alert(isNaN(number42)); //打印出假 alert(isNaN(wibble)); //打印真实
第一次测试是正确的,因为数字42实际上是一个数字。第二个测试为假,因为摆动不是数字。这很简单,但是如果我们开始考虑一些不同的值怎么办?
var empty = ""; var nothing = null; alert(isNaN(empty)); //打印出假 alert(isNaN(nothing)); //打印出假
这里发生的是isNaN()尝试将给定的任何值转换为数字,这意味着“”和null将转换为0,并且该函数返回false,因为它们现在是数字。您可以通过执行以下任一操作来自己尝试:
var empty = ""; alert(+empty); //打印出0 alert(Number(empty)); //打印出0
要解决此问题,您可以使用该parseInt()功能。这将字符串作为输入,并尝试将其转换为数字,如果不可能,则返回NaN。如果parseInt()给定一个空字符串或null值,它还将返回NaN,而不是将它们转换为0。这为我们提供了一种机制,通过该机制,我们可以使用parseInt()和组合测试值isNaN()。
var empty = ""; alert(isNaN(parseInt(empty))); //打印真实
最后,如果我们放弃isNaN()和parseInt()未定义值的结果如下。
var nothing; alert(parseInt(nothing) + ", " + isNaN(nothing)); //打印出NaN,是的
该isNaN()函数返回true,因为它无法将值转换为任何数字。
var nothing; alert(+nothing); alert(Number(nothing));
此代码为两个警报语句打印出NaN。