1. 第一种方法
任何整数都会被1整除,即余数是0。利用这个规则来判断是否是整数。
let num1 = 3
let num2 = 3.3
console.log(num1%1 === 0) // true
console.log(num2%1 === 0) // true
这个办法对于对于字符串和某些特殊值显得力不从心
,如下:
console.log(''%1 === 0) // true
console.log('3'%1 === 0) // true
console.log(true%1 === 0) // true
console.log([]%1 === 0) // true
所以需要在判断是否为整数之前,先判断该数据是不是一个number
console.log(typeof '' === 'number' && ''%1 === 0) // false
console.log(typeof '3' === 'number' && '3'%1 === 0) // false
console.log(typeof true === 'number' && true%1 === 0) // false
console.log(typeof [] === 'number' && []%1 === 0) // false
console.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) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
3. 第三种方法
ES6提供了Number.isInteger
Number.isInteger(3) // true
Number.isInteger(3.1) // false
Number.isInteger('') // false
Number.isInteger('3') // false
Number.isInteger(true) // false
Number.isInteger([]) // false