首页 > 其他 > 详细

前端面试题总结

时间:2019-03-31 21:20:00      阅读:145      评论:0      收藏:0      [点我收藏+]

一、JavaScript中判断为整数的多种方式

方式一、使用取余运算符判断

function isInteger(obj) {

  return obj%1 === 0
}
正确:
isInteger(4) // true
isInteger(4.8) // false
错误:
isInteger(‘‘// true
isInteger(‘4‘// true
isInteger(true// true
isInteger([]) // true
缺点:对于空字符串、字符串类型数字、布尔true、空数组都返回了true
改善:判断下对象是否是数字
function isInteger(obj) {
    return typeof obj === ‘number‘ && obj%1 === 0
}

方式二、【推荐】使用Math.round、Math.ceil、Math.floor判断

原理:整数取整后还等于本身。利用这个特性来判断是否是整数,Math.floor示例,如下

function isInteger(obj) {

  return Math.floor(obj) === obj
}
isInteger(4) // true
isInteger(4.8) // false
isInteger(‘‘// false
isInteger(‘4‘// false
isInteger(true// false
isInteger([]) // false

方式三、通过parseInt判断

function isInteger(obj) {

  return parseInt(obj, 10) === obj
}
正确:
isInteger(4) // true
isInteger(4.8) // false
isInteger(‘‘// false
isInteger(‘4‘// false
isInteger(true// false
isInteger([]) // false
错误:
isInteger(10000000000000000000000) // false
缺点:parseInt在解析整数之前强迫将第一个参数解析成字符串。

方式四、通过位运算判断

function isInteger(obj) {

    return (obj | 0) === obj
}
正确:
isInteger(4) // true
isInteger(4.8) // false
isInteger(‘‘// false
isInteger(‘4‘// false
isInteger(true// false
isInteger([]) // false
错误:
isInteger(Math.pow(2, 32)) // 32位以上的数字返回false了
缺点:位运算只能处理32位以内的数字,对于超过32位的无能为力。

方式五、ES6提供了Number.isInteger

Number.isInteger(4) // true

Number.isInteger(4.8) // false

Number.isInteger(‘‘// false
Number.isInteger(‘4‘// false
Number.isInteger(true// false
Number.isInteger([]) // false
 
总结:对于ES5中,推荐使用 Math.floor(obj) === obj,ES6中推荐使用Number.isInteger方法。
 

前端面试题总结

原文:https://www.cnblogs.com/zhoudawei/p/10633192.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!