js的匿名函数
什么是匿名函数?
匿名函数就是没有名字的函数,作用是创建一块封闭区域,外面不能够访问里面的变量和方法,从而不会造成全局变量的污染。匿名函数如何定义呢?
最常用的用法:
(function(){
console.log("我是匿名函数");
})();
我们都知道,要使用一个函数,一般情况下,我们都是去调用它的名称,那匿名函数没有名字,我们如何去执行呢?
请看上面代码的最后一行,是不是多了一个()小括号,这就是匿名函数的执行,意思是定义后立即执行。
如果要传参呢?
(function(name){
console.log(name);
})('匿名函数');
输出:匿名函数
如果我们要调用匿名函数呢?
我们可以来看看JQuery的源码:
(function( window, undefined ) {.......})(window);
这就是个匿名函数,我们无法去访问它,那为什么我们能调用JQuery呢?
我们接着看源码:
(function( window, undefined ) {
var jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context );
},
.........
window.jQuery = window.$ = jQuery;
})(window);
注意上面蓝色的代码,其实,JQuery的源码里,是在匿名函数里将jQuery传给了window,这也就是为什么参数的传递中要传递window,所以以后每次调用jquery其实是调用window的jQuery这个对象。
由jquery调用自己里面的方法。外面是无法调用的,这样可以保证安全和不冲突。