function fn(){
var i = 1;
return function(n){
console.log(n+(i++))
}
}
var f=fn();
window.onload=function(){
f(10);
f(20);
fn()(10);
fn()(20);
}
控制台输出结果:11,22,11,21;
function fn(){
var i = 1;
return function(n){
console.log(n+(i++))
}
}
window.onload=function(){
var f=fn();
f(10);
f = null;
var f=fn();
f(20);
f = null;
fn()(10);
fn()(20);
}
控制台输出结果:11,21,11,21;
总结:js变量初始化方法为方法返回的值时,该值会一直存在于作用域中,如果不进行闭包处理,该对象就不会被回收,所以这种情况下,对象使用完一定要进行闭包处理,防止对象一直存在于作用域影响性能以及下次调用时返回的值。