闭包中的变量一直在内存中,闭包内的函数被调用时先独到的变量是闭包里的
代码片段一。
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); // The Window
代码片段二。
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()()); // My Object
(function(){
var n=999;
nAdd=function(){n+=1}
print = function(){alert(n)}
})()
print (); // 999
nAdd();
print (); // 1000
检测滚动方向,闭包保证变量不污染外部
(function () {
var previousScroll = 0;
$(window).scroll(function(){
var currentScroll = $(this).scrollTop();
if (currentScroll > previousScroll){
alert('down');
} else {
alert('up');
}
previousScroll = currentScroll;
});
}()); //run this anonymous function immediately
评论区