JavaScript中如何判断一个数是否为整数

作者:admin     字体:[增加 减小]    类型:原创
在PHP中我们可以轻松使用is_int判断变量是否为整数,但是在JavaScript中,并没有提供现成的函数或方法,下面我来给大家介绍一种超级简单好用的方法。

在PHP中,我们判断一个变量是否为数值,可以采用is_numeric,检测一个变量是否为整数,可以用is_int,举例如下:

//检测变量是否为数字或数字字符串 
var_dump(is_numeric('123.456'));    //=> bool(true)
var_dump(is_numeric('123abc')) ;    //=> bool(false)

//检测变量是否是整数
var_dump(is_int('123.456'));    //=> bool(false)
var_dump(is_int('123'));        //=> bool(false)
var_dump(is_int(123));          //=> bool(true)

在JavaScript中,我们检测一个变量是否为数值,可以使用typeofObject.prototype.toString.call(o)==='[object Number]',举例如下:

<script>
var n = 123;                //数字直接量
var m = new Number(123);    //数字对象
console.log(typeof n);      //number
console.log(typeof m);      //object
console.log(Object.prototype.toString.call(n)); //[object Number]
console.log(Object.prototype.toString.call(m)); //[object Number]
</script>

从上面,我们可以看出,单纯使用typeof在判断new数字对象时并不能得到可靠结果,所以我们最好的办法是如下判断:

var bool = typeof n === 'numer' || Object.prototype.toString.call(n) === '[object Number]';

但是,我们如何判断一个数值是否是整数呢,JavaScript中并没有提供现成的方法。通过作者编程实践,可以采用下面简单办法:

var bool = n === Math.floor(n);

举例如下:

<script>
console.log('abc'===Math.floor('abc')); //false
console.log('123'===Math.floor('123')); //false
console.log(123===Math.floor(123));     //true
console.log(123.456===Math.floor(123.456));     //false
</script>

如果要判断一个字符串是整数,那么可以采用下面的方法

var bool = parseInt(s) === Math.floor(parseInt(s));

下面截出的代码是在ThinkPHP的控制器中演示方法。

PHP函数is_numeric和is_int