常见使用
var Zepto_me = (function(){
var $ = function(){alert(1212)};
$.isWindow = function(obj){return obj!=null && obj == window};
return $;
})();
window.Zepto_me = Zepto_me;
window.$ === undefined && (window.$ = Zepto_me);
$().isWindow(window);
局部变量的累加
function foo(x){
var a = x;
return function(){
alert(a++);
};
};
var f = foo(1);
f();// 1
f();// 2
分流的那个函数可以使用原来函数的变量
(function(i){
var a = i;
(function(){
alert(a);
}());
}(1));
var name = "the window";
var object = {
name : "the object",
getName : function(){
name = this.name;
return function(){//执行这个分流函数的是window对象,所以当前this表示的是window
return this.name;//the window
return name;//the object
}
}
}
alert(object.getName()());
寻找变量的路径
var a =33;
function foo(x){
// var a = x;
return function(){
alert(a++);//会先从当前函数域中寻找,在从foo函数域中寻找,在从window中寻找
};
};
var f = foo(1);
window.f();
window.f();
常见
var Zepto_me = (function(){
function isWindow(obj){ return obj != null && obj == obj.window }
var $ = function(){};
$.isWindow = isWindow;//闭包
return $;//闭包
})();
alert(Zepto_me.isWindow(window));//true
总结
闭包就是某个函数在单独执行期间,可以使用一个变量,这个变量是在别的函数体里面定义的。也就是说变量的使用范围扩大了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。