三种自动立即执行的方法
1)
(function foo() {...}) // 这里是故意换行,实际上可以和下面的括号连起来
();
2)
(function foo(){...}());
3)
void function () { // 这里是真正需要的代码}();
所谓不去污染全局命名空间,是因为 IIFE 创建了一个新的函数作用域,你真正的业务代码被封装在其中,自然就不会触碰到全局对象了。如果你需要全局对象,那就 pass 给 IIFE:
void function (global) { // 在这里,global 就是全局对象了 }(this) // 在浏览器里,this 就是 window 对象

浙公网安备 33010602011771号