IIFE
立即执行函数表达式 (Immediately Invoked Function Expression)
- 将一个参数命名为 undefined,但是在对应的位置不传入任何值,这样就可以
保证在代码块中 undefined 标识符的值真的是 undefined:
undefined = true;
// 给其他代码挖了一个大坑!绝对不要这样做!
(function IIFE(undefined) {
var a;
if (a === undefined) {
console.log("Undefined is safe here!");
}
}
)()
- 是倒置代码的运行顺序序,将需要运行的函数放在第二位,在 IIFE
执行之后当作参数传递进去。
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
)项目中被广泛使用。尽管这种模式略显冗长,但有些人认为它更易理解