什么叫闭包函数:定义在函数内部的函数,被 return 出去,在函数外部调用的话。会形成闭包。
闭包函数的特点:如果在闭包函数中使用了某个局部变量,这个局部变量的空间会被系统保存至闭包结束。
闭包的用途:可以读取到整个父级作用域中的变量,可以让这些变量始终保持在内存中。
注意事项:
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,
所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。
解决方法是,在退出函数之前,将不使用的局部变量全部删除。
如将当前变量的值设置为“null”,将变量的引用解除,当垃圾回收启动时,会自动对这些值为“null”的变量回收
function fun(){
var i=0;
return function(n){
console.log(n+(++i));
}
}
var f=fun();
f(5); //6
f(6); //8 此时还会延续上一次的++i;
fun()(5); //6 每次都会走初始化 i=0
fun()(6); //7