有一种匿名函数可以自动执行,这种函数定义如下:
(function(){
//执行一些语句
})();
也可以为函数添加参数,语法格式如下:
(function(arg_1,arg_2,...arg_n){
//执行一些语句
})(arg_1,arg_2,...arg_n);
大家可以这样理解
(function(){ })是一个函数表达式——函数表达式是一种可以用表达式声明的未命名函数,也称为匿名函数, 后面的()则是调用函数表达式,执行函数表达式中的语句。即为匿名自执行函数。
匿名自执行函数的作用:
由于函数是一个封闭的作用域范围,并且可以嵌套函数,所以可以使用这种匿名自执行函数来实现封装自己的所有函数和变量,从而避免来自多个开发者的多个函数相互冲突,并且,由于它们位于同一个函数中,所以可以互相引用。
由于外部无法引用函数内部的变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。这同时也相当于定义了一个命名空间,来自不同的开发者的功能位于自己的命名空间内。
如何访问匿名自执行函数里面的函数和对象
通常是为函数定义一个参数,该参数是一个对象,在里面的函数或变量前加上对该对象的引用,这样该函数或变量就成为该对象的方法或属性了。
最常用到的是将全局对象window作为参数传递进去,这样函数或变量就成为全局函数和变量了。很多库函数就是用到了这种匿名自定义函数定义,,例如jQuery,整个库都位于匿名自执行函数中,并传递window作为参数。
(function(window,undefined){
//jQuery定义
})(window);