一.JS中的Numeber类型
1.问题一:在四则运算中存在精度丢失的问题
(1)比如:0.1 + 0.2 //结果为:0.30000000000000004
(2)原因:计算机中用二进制来存储小数,而大部分小数转成二进制之后都是无限循环的值,因此存在取舍问题,也就是精度丢失。
- 超过最大安全整数的运算是不安全的
(1)比如:9007199254740991 + 2 // 9007199254740992
(2)原因:本质上还是因为数字类型在计算机中的存储结构。在尾数位不够补零之后,只要是多余的尾数为1所对应的整数都不能被精确表示。
3.上面两个问题原因总结
不管是浮点数计算的结果错误和大整数的结果错误,最终都可以归结到JS的精度只有53位(尾数只能存储53位的有效数字)
4.解决方案:
(1)大而全的解决方案就是使用mathjs
(2)使用这个1k都不到的number-precision
二.css设计模式
OOCSS; SMACSS;BEM;Atomic CSS;CSSin JS
细节可以见我的独立博客哦。
三.WeakMap可以解决闭包内存泄漏问题
1.map
(1)任意值当做键
(2)对象Object的键只能是字符串
(3)Map类似字典,set类似集合
2.weakmap
(1)键必须是对象
(2)当引用的对象消失之后,JS的GC垃圾回收机制会自动释放占用的内存,从而解决内存泄漏问题