开发中有时候需要我们自己封装api,这时候就会用到自调用匿名函数。那么自调用匿名函数是什么呢?
(function(){
// code
})();
包围函数(function(){}) 的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内为匿名函数的参数。
通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。
例如:
(function(a){
console.log(a+1);
})(10);
在jQuery中就有用到这样的写法:
(function(window, undefined){
// code
})(window);
通过传入window变量,使window由全局变量变为局部变量,当在jQuery代码块中访问window时,不需要将作用域链回退到顶层作用域,这样可以更快的访问window;更重要的是,将window作为参数传入,可以在压缩代码时进行优化。
传入undefined,是为了在 自调用匿名函数 的作用域内,确保undefined是真的未定义的。因为undefined能够被重写,赋予新的值。