被我忽略的 6 個(gè) JS 開發(fā)小技巧
分享幾個(gè)實(shí)際開發(fā)中經(jīng)常被忽略 JS 技巧,下面,我們一起來(lái)看。
1. typeof 誤解
聲明一個(gè)變量 var a,typeof a 常被誤解是求變量 a 的類型,其實(shí)是求變量 a 中「當(dāng)前值的類型」。如圖所示,當(dāng) a 的值發(fā)生改變時(shí),typeof a 的結(jié)果也在發(fā)生變化。
2. 真假難辨
js 中的「假值」包含 ""、0、-0、NaN,、null、undefined、false,記住空字符串也是「假值」,而空數(shù)組 [] 和空對(duì)象 {} 卻不是假值。通過(guò)下面代碼可以驗(yàn)證一下:
3. == 與 ===
這段代碼的打印結(jié)果是啥?結(jié)果是 a == c,看到這個(gè)結(jié)果我難以置信。== 和 === 的區(qū)別在于,== 檢查「值相等」,而 === 檢查「值和類型」相等。但這么說(shuō)并不精確。正確的說(shuō)法是,== 檢查的是允許類型轉(zhuǎn)換的情況下值的相等性,而 === 檢查不允許類型轉(zhuǎn)換的情況下值的相等性;因此,=== 經(jīng)常被稱為“嚴(yán)格相等”。
4. 類型之間比較
上面的打印結(jié)果是啥?結(jié)果打印的是”我該咋辦“。原因是這樣的, b 在 < 和 > 比較過(guò)程中,b 被轉(zhuǎn)換成了無(wú)效數(shù)字 NaN,「規(guī)范設(shè)定 NaN 即不大于也不小于任何值」。== 比較結(jié)果為假是因?yàn)闊o(wú)論 42 == NaN 還是 "42" == "suyan" 都不可能為真。
5. 自己實(shí)現(xiàn)一個(gè) isNaN 函數(shù)
這里利用了 NaN 值的一個(gè)特性,即 NaN 是整個(gè)語(yǔ)言中唯一和自身不相等的值。因此,NaN 是使得 x != x 為真的唯一值。
6. IIFE
別被上面的函數(shù)搞暈,換個(gè)姿勢(shì):
還不懂?那看 讓 JavaScript 文件代碼相互獨(dú)立 這篇吧。
大家加油!