zoukankan      html  css  js  c++  java
  • 前端面试题总结

    一、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方法。
     
    二、写一个json对象转地址栏参数的功能
    function qsStringify(object) {
      let keys = Object.keys(object)
      let string = ''
      keys.forEach(key => {
        string += `${key}=${object[key]}&`
      });
      return string.substring(0, string.length -1)
    }
     

    function param(data) {
      let url = ''
      for (var k in data) {
        let value = data[k] !== undefined ? data[k] : ''
        url += `&${k}=${encodeURIComponent(value)}`
      }
      return url ? url.substring(1) : ''
    }

  • 相关阅读:
    Ucenter会员整合
    站点收藏
    天天团购整理笔记一
    MSSQLSERVER 时间差计算
    shell 编程实例练习(一)
    Linux PCI 设备驱动基本框架(二)
    Shell grep / sed 学习
    转:Python自省(反射)指南
    Shell 数组与双括号
    Python基本数据生成
  • 原文地址:https://www.cnblogs.com/zhoudawei/p/10633192.html
Copyright © 2011-2022 走看看