
一.JS中的Numeber類型
1.問題一:在四則運算中存在精度丟失的問題
(1)比如:0.1 + 0.2 //結(jié)果為:0.30000000000000004
(2)原因:計算機中用二進制來存儲小數(shù),而大部分小數(shù)轉(zhuǎn)成二進制之后都是無限循環(huán)的值,因此存在取舍問題,也就是精度丟失。
- 超過最大安全整數(shù)的運算是不安全的
(1)比如:9007199254740991 + 2 // 9007199254740992
(2)原因:本質(zhì)上還是因為數(shù)字類型在計算機中的存儲結(jié)構(gòu)。在尾數(shù)位不夠補零之后,只要是多余的尾數(shù)為1所對應的整數(shù)都不能被精確表示。
3.上面兩個問題原因總結(jié)
不管是浮點數(shù)計算的結(jié)果錯誤和大整數(shù)的結(jié)果錯誤,最終都可以歸結(jié)到JS的精度只有53位(尾數(shù)只能存儲53位的有效數(shù)字)
4.解決方案:
(1)大而全的解決方案就是使用mathjs
(2)使用這個1k都不到的number-precision
二.css設(shè)計模式
OOCSS; SMACSS;BEM;Atomic CSS;CSSin JS
細節(jié)可以見我的獨立博客哦。
三.WeakMap可以解決閉包內(nèi)存泄漏問題
1.map
(1)任意值當做鍵
(2)對象Object的鍵只能是字符串
(3)Map類似字典,set類似集合
2.weakmap
(1)鍵必須是對象
(2)當引用的對象消失之后,JS的GC垃圾回收機制會自動釋放占用的內(nèi)存,從而解決內(nèi)存泄漏問題