视频一面总结
后端返回一个长整形,前端如何处理才能让精度不丢失
问题
如果服务器传来的json中包含一个很大的整数,如 { “id”: 296675198462066688 } ,那么接受后会发现变成了 { id: 296675198462066700 } 。
问题原因
js是弱类型语言,所有的数字类型统称为Number类型,不区分int、long、double等。而Number是根据IEEE 754标准中的double来实现的,即所有的Number类型都是64位双精度实型。js内置有32位整数,而number类型的安全整数是53位。如果超过53位的,你不能用json传递,需要用其他数据类型,比如字符串,或拆分成两个数据字段。
解决
转成字符串,如果需要运算,需要后端处理
数组去重([1, 2, ‘1’, ‘2’, 3, ‘4’, 4, 2]
除了链接内的方法,还有一个[...new Set(a)]
方法
引申问题
Set -> Set是什么? -> Set 怎么实现? -> Set 可以去重混合数组吗?
Set是什么
ES6新的数据结构,类似数组,但成员的值是唯一的,没有重复的值
Set怎么实现
1
2
3
4
5
6
7let s = new Set()
s.add(1)
s.add(2)
s.add(3)
for(let i of s){
console.log(i) // => 1 , 2 , 3
}Set能去重混合数组吗
1
2[...new Set(array)]
Array.from(new Set(array))set中两个NaN相等,会去除重复的NaN,但是
===
下是不相等的
Map -> Map 的键是如何存储的? -> 哈希是什么?
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”
构造函数有 return, 会出现什么情况 ?
HTTP 静态资源的优化方式 ?
浏览器缓存机制 ?
视频一面总结
https://moewang0321.github.io/2019/10/30/2019-10-30-日常结/