闭包一直不好掌握。
问题:一个函数每次返回数字叠加,用闭包实现
方案:
function tick(){
var a = 1;
return function(){
return a++;
};
}
var c = tick();
alert(c());
alert(c());
alert(c());
函数内部的变量无法被外部获取,但是通过闭包,能返回局部变量。
原理是,函数在创建时会生成一个作用域链,在函数执行时,变量从作用域链中读取。
所以在函数中return 一个函数的话,可以把局部变量存在内存中。