2
4 個(gè)回答
15
采納 沒有區(qū)別。 你需要明白 IIFE 的原理,我簡單說一下:
IIFE 并非必須,傳統(tǒng)一點(diǎn)可以這么寫:
那么為什么要 IIFE?
于是,開發(fā)者們想找一個(gè)可以解決以上問題的寫法。那么像下面這么寫行不行呢?
當(dāng)然是不能,但是為什么呢?因?yàn)? 如何把它變得正確?說起來也簡單,只要把 聲明 變成 表達(dá)式(Expression) 就可以了。 實(shí)際上轉(zhuǎn)變表達(dá)式的辦法還是很多的,最常見的辦法是把函數(shù)聲明用一對(duì)
這就等價(jià)于:
但是之前我們說不行的那個(gè)寫法,其實(shí)也可以直接用括號(hào)包起來,這也是一種等價(jià)的表達(dá)式:
所以你問有沒有區(qū)別?很簡單:木有~ 另外,剛才說過轉(zhuǎn)變表達(dá)式的方式很多,的確還有很多別的寫法,比如:
或者
這些都可以。 我個(gè)人挺偏愛用
OK,所謂不去污染全局命名空間,是因?yàn)?IIFE 創(chuàng)建了一個(gè)新的函數(shù)作用域,你真正的業(yè)務(wù)代碼被封裝在其中,自然就不會(huì)觸碰到全局對(duì)象了。如果你需要全局對(duì)象,那就 pass 給 IIFE:
我在這里寫過一個(gè)系列,其中一篇講作用域和命名提升的,里面的知識(shí)點(diǎn)對(duì)理解 IIFE 有幫助,有興趣的話可以繼續(xù)深入閱讀:http://blog.segmentfault.com/nightire/1190000000348228
2
方式一,調(diào)用函數(shù),得到返回值。強(qiáng)制函數(shù)直接量執(zhí)行再返回一個(gè)引用,引用在去調(diào)用執(zhí)行 |
|