概念
闭包是一个函数,通过闭包我们可以访问一个函数内部的变量。使用闭包我们可以尽量避免使用全局变量,从而避免使用全局变量带来的一些问题。学习闭包或者是匿名函数的话,最好将这两者结合来看。下面通过一个例子谈一下自己理解的闭包。
变量累加
全局变量
var age=1;
function box ()
{
return age++;
}
alert(age);
box();
alert(age);
局部变量
function box()
{
var age=1;
age++;
return age;
}
alert(box());
alert(box());
匿名函数/闭包
function AnonymousFunction()
{
var age=5;
return function()
{
age++;
return age;
};
}
// alert(AnonymousFunction()()); //调用写死,效果形同局部变量的累加
var b=AnonymousFunction();
alert(b()); //两行代码,只调用函数里面的匿名函数
alert(b());
b=null; //解除引用,等待垃圾回收
alert(b());
如上,1、使用全局变量可能会引起多个函数同时访问带来的问题;2、使用局部变量的话,比较死板;3、使用闭包的话,就没有前面两种方法的局限性了;但是需要注意处理掉没有使用价值的匿名函数,避免过多占用内存。结语
单独理解匿名函数和闭包的话,我还说不太清楚,只能把这两个结合着来说。匿名函数和闭包结合,可以实现访问函数内部的变量。
感谢您的宝贵时间,祝生活愉快,谢谢~~
—书生