isNaN() 函数用于检查其参数是否是非数字值。
比如
var xconsole.log(isNaN(x))
这个输出就是true,因为x 没有定义,是undefined,是“非数字值”
在javascript中,没有对象、直接调用的函数,都是全局函数。说是全局,其实只不过是从属于内置对象window的属性或方法而已。也就是说,isNaN()等价于window.isNaN()。其它方法属性也是类似,比如:
// 不属于任何对象的ivar i = 5
function test(){
alert(i)
}
test()// 5
alert(i) // 5
alert(window.i) // 5
以上几种alert出来的i都是5,说明window.i其实就是声明的那个i。
isNaN是window对象的一个方法,它的作用是判断参数是不是一个NaN。其实也就是看参数能不能转化为数字,如果能,就返回false;不能转化为数字,则返回true。例如:
isNaN('134') // false,字符串134可以转化为数字isNaN('1a34') // true,字符串1a34不能转化为数字
isNaN('0x34') // false,字符串0x34能转化为数字,十六进制
isNaN(true) // false,布尔型变量能转化为数字,值为1
有一点要注意,在上面已经提到,布尔型值是能够转换成数字的,比如:
alert(true + 1) // 结果为2,因为true会转化为数字1,而false会转化为数字0但是,如果用下面的代码,就会得到NaN:
alert(parseInt(true)) // NaNparseInt和isNaN类似,都是window的一个方法,其作用是将参数强制转化为整数,类似的还有window的另一个方法parseFloat,将参数强制转化为浮点数。显然这里parseInt(true)得到了一个NaN,但isNaN(true)得到的却是false。
这两者之间的差别,太具体的我就不清楚了。