【JavaScript】闭包

本文介绍了闭包的概念及其在避免全局变量问题方面的应用,并通过示例对比了全局变量、局部变量及闭包的不同之处。文章还探讨了如何合理利用闭包来优化内存管理。

概念

       闭包是一个函数,通过闭包我们可以访问一个函数内部的变量。使用闭包我们可以尽量避免使用全局变量,从而避免使用全局变量带来的一些问题。学习闭包或者是匿名函数的话,最好将这两者结合来看。下面通过一个例子谈一下自己理解的闭包。

变量累加

全局变量

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、使用闭包的话,就没有前面两种方法的局限性了;但是需要注意处理掉没有使用价值的匿名函数,避免过多占用内存。

结语

       单独理解匿名函数和闭包的话,我还说不太清楚,只能把这两个结合着来说。匿名函数和闭包结合,可以实现访问函数内部的变量。
感谢您的宝贵时间,祝生活愉快,谢谢~~
                                                                                                                              —书生



评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值