IIFE
代表立即執(zhí)行函數(shù)表達(dá)式 (Immediately Invoked Function Expression)
var a = 2;
(function IIFE( global ) {
var a = 3;
console.log( a ); // 3
console.log( global.a ); // 2
})( window );
console.log( a ); // 2
UMD
IIFE 還有一種變化的用途是倒置代碼的運(yùn)行順序牺蹄,將需要運(yùn)行的函數(shù)放在第二位,在 IIFE 執(zhí)行之后當(dāng)作參數(shù)傳遞進(jìn)去。這種模式在 UMD(Universal Module Definition)項(xiàng)目中被廣 泛使用。盡管這種模式略顯冗長悠垛,但有些人認(rèn)為它更易理解。
var a = 2;
(function IIFE( def ) {
def( window );
})(function def( global ) {
var a = 3;
console.log( a ); // 3 console.log( global.a ); // 2
});
函數(shù)表達(dá)式 def 定義在片段的第二部分呼奢,然后當(dāng)作參數(shù)(這個(gè)參數(shù)也叫作 def)被傳遞進(jìn) IIFE 函數(shù)定義的第一部分中酷勺。最后,參數(shù) def(也就是傳遞進(jìn)去的函數(shù))被調(diào)用固该,并將 window 傳入當(dāng)作 global 參數(shù)的值锅减。