什么是闭包?
如果一个函数访问了另一个函数的内部变量,那么这个函数加这个变量,就叫做闭包。
闭包的用途是什么?
出于各种原因,我们需要获取到函数内部的局部变量,这时我们可以在函数内部定义一个函数,新定义的函数可以间接访问这个变量(相当于给别人一把钥匙)。 例如:
function f1(){
var n=1;
function f2(){
alert(n); // 1
}
}
在上面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的,f2就是闭包。
只要把f2作为返回值,我们就可以在外部读取f1的内部变量。
闭包的缺点是什么?
闭包使函数内部的变量不能被内存释放,这些变量就会占用内存,加大内存的消耗,在IE中可能导致内存泄露。解决这个问题的办法就是在不使用这些变量时,及时把不需要的局部变量全部删除。