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) : ''
    }

  • 相关阅读:
    MBProgressHUD上传照片进度提示
    -oN ,-oX,-oG
    nmap -sN -p 22,80 www.baidu.com
    22/tcp open|filtered ssh 80/tcp open|filtered http
    nmap -sS
    nmap -sT
    tcpdump --nnx tcp and host 192.168.10.9
    awk对列求和
    genlist -s 192.168.1.*
    /usr/local/sbin/fping -s www.baidu.com www.google.com
  • 原文地址:https://www.cnblogs.com/zhoudawei/p/10633192.html
Copyright © 2011-2022 走看看