三种自动立即执行的方法

1)

(function foo() {...})    // 这里是故意换行,实际上可以和下面的括号连起来
();

2)

(function foo(){...}());

3)

void function () {    // 这里是真正需要的代码}();

 

所谓不去污染全局命名空间,是因为 IIFE 创建了一个新的函数作用域,你真正的业务代码被封装在其中,自然就不会触碰到全局对象了。如果你需要全局对象,那就 pass 给 IIFE:

void function (global) {
    // 在这里,global 就是全局对象了
}(this)    // 在浏览器里,this 就是 window 对象

 

posted @ 2016-07-09 16:23  乱世_独自美  阅读(142)  评论(0)    收藏  举报