1. 第一种方法

任何整数都会被1整除,即余数是0。利用这个规则来判断是否是整数。

  1. let num1 = 3
  2. let num2 = 3.3
  3. console.log(num1%1 === 0) // true
  4. console.log(num2%1 === 0) // true

这个办法对于对于字符串和某些特殊值显得力不从心,如下:

  1. console.log(''%1 === 0) // true
  2. console.log('3'%1 === 0) // true
  3. console.log(true%1 === 0) // true
  4. console.log([]%1 === 0) // true

所以需要在判断是否为整数之前,先判断该数据是不是一个number

  1. console.log(typeof '' === 'number' && ''%1 === 0) // false
  2. console.log(typeof '3' === 'number' && '3'%1 === 0) // false
  3. console.log(typeof true === 'number' && true%1 === 0) // false
  4. console.log(typeof [] === 'number' && []%1 === 0) // false
  5. console.log(typeof 3 === 'number' && 3%1 === 0) // true

2. 第二种方法

使用Math.round、Math.ceil、Math.floor判断

整数取整后还是等于自己。利用这个特性来判断是否是整数,Math.floor示例,如下

  1. function isInteger(obj) {
  2. return Math.floor(obj) === obj
  3. }
  4. isInteger(3) // true
  5. isInteger(3.3) // false
  6. isInteger('') // false
  7. isInteger('3') // false
  8. isInteger(true) // false
  9. isInteger([]) // false

3. 第三种方法

ES6提供了Number.isInteger

  1. Number.isInteger(3) // true
  2. Number.isInteger(3.1) // false
  3. Number.isInteger('') // false
  4. Number.isInteger('3') // false
  5. Number.isInteger(true) // false
  6. Number.isInteger([]) // false