闭包循环执行的问题解决

<!DOCTYPE HTML>
<html>
<head><title>鼠标坐标</title>

<style>
.divtab{
	width:200px;
	height:20px;
	background:red;
}

.divtab li {
	float:left;
	list-style-type:none;
	background:#ccc;
	display:block;
	width:50px;
	border:1px solid yellow;
}
.divtab  .current{
	background:#999;
}
.divcon {
	width:200px;
	height:200px;
	background:#ddd;
}
#con div{
	display:none;
}
</style>

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
</head>

<body>
<script >
//最基本的不做其他操作的 这个不会有问题
/* function box (){
	var arr = [];
	for(var i = 0; i < 5 ;i++){
		arr[i] = i;
	}
	return arr;
}
alert(box());   
______________________________________________________________
要把数组的每项都搞成函数,这个有问题
function box (){
	var arr = [];
	for(var i = 0; i < 5 ;i++){
		arr[i] = function(){ //执行的最后都是5了,因为这个函数确定上层 的   i  
				return i;
		};
	}
	return arr;
}
var b= box();
for(var i = 0 ;i<5;i++){
	alert(b[i]()); 
}
____________________________________________________________________
这个可以把变量i 存下来,但arr[i] 不能执行了
function box (){
	var arr = [];
	for(var i = 0; i < 5 ;i++){
		arr[i] = (function(num){ //通过函数的及时自我执行,把i保存下来,驻留在内存中了。
					return num;		但arr[i] 是数字不能执行
		})(i);
	}
	return arr;
}
var b= box();
for(var i = 0 ;i<5;i++){
	alert(b[i]());//是报错的number  is not a function; 
}


————————————————————————————————————————————

arr[i] 是函数可以执行
*/
function box (){
	var arr = [];
	for(var i = 0; i < 5 ;i++){
		arr[i] = (function(num){ //通过函数的及时自我执行,把i保存下来,驻留在内存中了。
												//并且arr[i] 都是函数可以执行
					return function(){
						console.log('sss');
						return num;
					}
		})(i);
	}
	return arr;
}
var b= box();
for(var i = 0 ;i<5;i++){
	alert(b[i]());//arr[i] 是函数可以执行 
}


</script>
</body>
</html>

从北风网的李老师那里得到的知识


http://study.163.com/course/courseLearn.htm?courseId=252008#/learn/video?lessonId=361385&courseId=252008

转载于:https://my.oschina.net/122612475/blog/355928

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值