视频一面总结

  1. 后端返回一个长整形,前端如何处理才能让精度不丢失

    问题

    如果服务器传来的json中包含一个很大的整数,如 { “id”: 296675198462066688 } ,那么接受后会发现变成了 { id: 296675198462066700 } 。

    问题原因

    ​ js是弱类型语言,所有的数字类型统称为Number类型,不区分int、long、double等。而Number是根据IEEE 754标准中的double来实现的,即所有的Number类型都是64位双精度实型。js内置有32位整数,而number类型的安全整数是53位。如果超过53位的,你不能用json传递,需要用其他数据类型,比如字符串,或拆分成两个数据字段。

    解决

    转成字符串,如果需要运算,需要后端处理

  2. 数组去重([1, 2, ‘1’, ‘2’, 3, ‘4’, 4, 2]

除了链接内的方法,还有一个[...new Set(a)]方法

引申问题
  • Set -> Set是什么? -> Set 怎么实现? -> Set 可以去重混合数组吗?
    1. Set是什么

      ES6新的数据结构,类似数组,但成员的值是唯一的,没有重复的值

    2. Set怎么实现

      1
      2
      3
      4
      5
      6
      7
      let s = new Set()
      s.add(1)
      s.add(2)
      s.add(3)
      for(let i of s){
      console.log(i) // => 1 , 2 , 3
      }
    3. Set能去重混合数组吗

      1
      2
      [...new Set(array)]
      Array.from(new Set(array))

      set中两个NaN相等,会去除重复的NaN,但是===下是不相等的

  • Map -> Map 的键是如何存储的? -> 哈希是什么?

  1. new 做了什么事情, 实现 new ?

    1
    2
    3
    4
    /*new 具体干了啥*/
    var obj = {} //创建空对象
    obj.__proto__ = Base.prototype //把空对象的__proto__指向了Base的prototype
    Base.call(obj) //将Base的this替换成obj,并调用Base

    []: https://my.oschina.net/u/3607067/blog/2209082 “实现new”

  2. 构造函数有 return, 会出现什么情况 ?

  3. HTTP 静态资源的优化方式 ?

  4. 浏览器缓存机制 ?


视频一面总结
https://moewang0321.github.io/2019/10/30/2019-10-30-日常结/
作者
Moe Wang
发布于
2019年10月30日
许可协议