【闭包浅析】

闭包
闭包:函数嵌套函数,函数作为参数被传入,函数作为返回值被返回。
闭包作用:创建局部变量;可以封装组件或者插件;函数外部访问函数内部的局部变量。
闭包特点:闭包中的局部变量不会销毁,使用不当容易造成内存泄漏。

闭包举例1:

<script>
	//函数作为返回值被返回,形成闭包。
    //变量a会常驻内存,不会销毁;并且可以在outer的外部访问a。
		 function outer(){
			var a = 1;
			return function(){
				a++;
				console.log(a);
			}
		}
		var fun = outer();
		fun();//函数执行,打印a的值为2
        fun();//函数执行,打印a的值为3		
</script>

闭包举例2:
    

<script>
    //闭包中的自由变量,是在函数定义时候确定的,不是执行的时候。
	//闭包中的自由遍历不会销毁。			
	var b = 1;
	function fun(){
		b++;
		console.log(b);
	}
	function outer(callback){
		var b = 66;
		callback();
	}
	outer(fun);//函数执行,打印b的值为2	
</script>

闭包举例3:

<body>	
	<ul>
		<li>列表1</li>
		<li>列表2</li>
		<li>列表3</li>
	</ul>	 
	<script>	
    //获取页面节点
	var lis = document.querySelectorAll("ul li");	
    //for(var i=0;i<lis.length;i++){            
	//		lis[i].onclick = function(){
	//			alert(i);//执行结果是循环结束后i的值。
	//}	
	
    //我们把上面的错误展示注释掉

    //匿名函数自执行,类似函数嵌套函数,也形成了闭包,可以创建局部变量。    
	for(var i=0;i<lis.length;i++){
		(function(j){
			lis[j].onclick = function(){
				alert(j);//执行结果是每次循环i的值。
			}
		})(i)		
	}
	</script>
</body>

总结

闭包不好理解,可以多做些练习,执行看结果,对比各种变化,这样有助于理解,与君共勉!
      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值