IIFE 立即執(zhí)行函數(shù)表達(dá)式 (Immediately Invoked Function Expression)
- 將一個(gè)參數(shù)命名為 undefined,但是在對應(yīng)的位置不傳入任何值,這樣就可以
保證在代碼塊中 undefined 標(biāo)識(shí)符的值真的是 undefined:
undefined = true;
// 給其他代碼挖了一個(gè)大坑!絕對不要這樣做!
(function IIFE(undefined) {
var a;
if (a === undefined) {
console.log("Undefined is safe here!");
}
}
)()
- 是倒置代碼的運(yùn)行順序序,將需要運(yùn)行的函數(shù)放在第二位,在 IIFE
執(zhí)行之后當(dāng)作參數(shù)傳遞進(jìn)去。
var a = 2;
(function IIFE(def) {
def(window);
}
)(function def(global) {
var a = 3;
console.log(a);
// 3
console.log(global.a);
// 2
});
這種模式在 UMD(
Universal Module Definition)項(xiàng)目中被廣泛使用。盡管這種模式略顯冗長,但有些人認(rèn)為它更易理解