1、undefined?和 void 0
undefined是js中的種基本數(shù)據(jù)類型,未定義的變量的類型和值都是undefined;但undefined不是js的保留字,可以更改,
例:undefined = 'bala',(在IE8以下打印undefined是‘bala’)。
所以建議在代碼中如果想獲取undefined的值用void 0,? void 0就是用來(lái)獲取undefined值的。
例:if(tag === void 0) return fun;
2、非整數(shù)的Number類型不能用 ===來(lái)比較
例:0.2+0.7 ===0.9? // false
實(shí)際運(yùn)算結(jié)果是:0.8999999999999999,為什么呢?JavaScript 里的數(shù)字是采用?IEEE 754 標(biāo)準(zhǔn)的 64 位雙精度浮點(diǎn)數(shù),在運(yùn)算的時(shí)候0.2和0.7首先轉(zhuǎn)成二進(jìn)制,浮點(diǎn)數(shù)用二進(jìn)制表示是無(wú)窮的,但由于IEEE 754 標(biāo)準(zhǔn)的 64 位雙精度浮點(diǎn)數(shù)的小數(shù)部分最多支持53位,所以小數(shù)部分截取后計(jì)算再轉(zhuǎn)成十進(jìn)制就有了精度誤差。
浮點(diǎn)數(shù)比較應(yīng)采用js提供的最小精度值,如:
Math.abs(0.2+0.7-0.9) <= Number.EPSILON
在實(shí)際項(xiàng)目中如果遇到浮點(diǎn)數(shù)計(jì)算的情況多數(shù)用toFixed方法保留小數(shù)位來(lái)解決計(jì)算結(jié)果一堆小數(shù)的問(wèn)題。例:
parseFloat((0.2+0.7).toFixed(2))? ?//注:toFixed方法返回的是字符串。
3、css偽元素:? ? ?::first-line? ? :: first-letter? ?::before? ::after
????3.1、::first-line? 表示元素的第一行,只能出現(xiàn)在塊級(jí)元素內(nèi)
? ? 3.2、::first-letter?表示元素的第一個(gè)字母,可以出現(xiàn)在所有元素內(nèi),常用來(lái)實(shí)現(xiàn)首字母大寫,例:
? ?????????<p>welcome to BeiJing</p>
? ? ????????p::{text-transform: uppercase;}?
? ? 3.3、::bdefore?和 ::after表示在內(nèi)容之前和之后插入一個(gè)虛擬元素,必須指定content屬性才會(huì)生效,例:
? ? ? ? ? ? <p>中國(guó)</p>
? ? ? ? ? ? p::after{content:"加油!";}