在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。
这两者之间的差别,太具体的我就不清楚了。
isNaN() 函数用于检查其参数是否是非数字值。
比如
var xconsole.log(isNaN(x))
这个输出就是true,因为x 没有定义,是undefined,是“非数字值”
1、isNaN()
使用js自带全局函数isNaN(), isNaN()返回一个Boolean值,如下 :
var c="hello" //字符串isNaN(c) //返回一个false
var c=10 //数字
inNaN(c)//返回一个true
如果以上c为一个空串或是一个空格,isNaN将把c当作数字0来处理,所以检查不严谨。
2、正则表达式
function checkNum(input){var reg=/^[0-9]+.?[0-9]*$/ //判断字符串是否为数字 ,判断正整数用/^[1-9]+[0-9]*]*$/
var num=document.getElementById(input).value
if(!reg.test(num)){
alert("请输入数字")
document.getElementById(input).value=""
return false
}
}
3、利用typeof的返回值
验证方法:如果返回的值为Number,则为数字;如果返回值为String或其它,则不是数字。如下所示:
var a=123var b='123abc'
typeof(a) //Number
typeof(b) //String