1. 第一种方法
任何整数都会被1整除,即余数是0。利用这个规则来判断是否是整数。
let num1 = 3let num2 = 3.3console.log(num1%1 === 0) // trueconsole.log(num2%1 === 0) // true
这个办法对于对于字符串和某些特殊值显得力不从心,如下:
console.log(''%1 === 0) // trueconsole.log('3'%1 === 0) // trueconsole.log(true%1 === 0) // trueconsole.log([]%1 === 0) // true
所以需要在判断是否为整数之前,先判断该数据是不是一个number
console.log(typeof '' === 'number' && ''%1 === 0) // falseconsole.log(typeof '3' === 'number' && '3'%1 === 0) // falseconsole.log(typeof true === 'number' && true%1 === 0) // falseconsole.log(typeof [] === 'number' && []%1 === 0) // falseconsole.log(typeof 3 === 'number' && 3%1 === 0) // true
2. 第二种方法
使用Math.round、Math.ceil、Math.floor判断
整数取整后还是等于自己。利用这个特性来判断是否是整数,Math.floor示例,如下
function isInteger(obj) {return Math.floor(obj) === obj}isInteger(3) // trueisInteger(3.3) // falseisInteger('') // falseisInteger('3') // falseisInteger(true) // falseisInteger([]) // false
3. 第三种方法
ES6提供了Number.isInteger
Number.isInteger(3) // trueNumber.isInteger(3.1) // falseNumber.isInteger('') // falseNumber.isInteger('3') // falseNumber.isInteger(true) // falseNumber.isInteger([]) // false
