剖析js中的闭包,理解闭包到底是个什么,有怎样的作用

关于js中的闭包,网上的资料满天飞。虽然每个人对于闭包都有自己独特的见解,但是总体上来说对于闭包的实际理解是一致的,只是描述的方式有所不同。那么以怎样的方式可以让读者更加简单清楚理解闭包呢?这里本人做了一些工作,以一种简单的方式将闭包描述出来。

1.闭包的概念

闭包就是定义在函数内部并且能够读取其他函数局部变量的函数。我们结合代码可以更好的理解
    	<script type="text/javascript">
    		function fun1(){
    			var str="外部函数变量";
    			function fun2(){
    				console.log(str);
    			}
    			return fun2;//在fun1函数内部返回
    		}
    		var result=fun1();
    		result();
    	</script>

以上的代码片段就是一种闭包,我们在外部函数fun1()中定义了一个内部函数fun2(),并且在fun2()的内部使用了fun1()的变量,最后我们又把内部函数fun2()函数返回。结合我们对闭包的定义:
外部函数------------------------------------------------->fun1()
外部函数变量------------------------------------------->str
内部函数------------------------------------------------->fun2()

2.闭包的常见写法

             <script type="text/javascript">
    		function fun1(){
    			var str="外部函数变量";
    			return function(){
    				console.log(str);
    			}
    		}
    		fun1()();
使用匿名函数作为内部函数返回是最常见的实现闭包的方式,这种方式和上面的方式相比更加的简单,更加容易理解。

3.闭包的作用

1.通过闭包我们可以在函数外部读取函数内部的变量,简单来说闭包就是将函数的外部和内部进行了连接。
2.使用闭包之后,外部函数的变量会始终存在与内存中,不会在外部函数调用后被GC回收。

4.使用闭包应该注意的问题

1.因为闭包会使得函数的变量始终存在与内存中,所以会对内存造成很大的消耗,会造成网页的性能问题。并且在IE中还会造成内存泄漏的问题。
2.因为闭包会使得外部函数的变量始终曝露在内存中,应该注意尽量不要改变外部函数的变量值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值