你不知道的JavaScript笔记2

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)项目中被广泛使用。尽管这种模式略显冗长,但有些人认为它更易理解

你可能感兴趣的:(你不知道的JavaScript笔记2)