为了账号安全,请及时绑定邮箱和手机立即绑定

老师能跟我们详细讲一下闭包的概念吗,像课程当中 循环中i的值

正在回答

4 回答

var list = document.getElementsByTagName('li');
for(var i = 0;i<10;i++){

//list[i]这里的i是立即执行的,每次循环都把当此的i值代进去了。
list[i].onclick = functition(){
alert(i);//函数没有立即执行,当函数执行的时候for循环已经完成了,i就是结束那个值,所以就是访问最后一个了。
}
}

所以就要把每次i的值都保存起来。可以使用匿名函数。

(function(i){

list[i].onclick = functition(){
alert(i);

}

})(i)

网易云课堂里面的妙味课堂里面有闭包的讲解。

2 回复 有任何疑惑可以回复我~

建议先看一下作用域链,了解了这个就能懂闭包了。

0 回复 有任何疑惑可以回复我~

h0=i是循环当中最后一个值,而lis[i]却可以是0,1,2...这样循环呢

0 回复 有任何疑惑可以回复我~
#1

278500368

var list = document.getElementsByTagName('li'); for(var i = 0;i<10;i++){ list[i].onclick = functition(){ alert(i);//这里的i由于是点击的时候触发的,当你点击的时候,循环早已经结束了。所以i就是循环结束后的值 //这里涉及到一个异步编程的问题 } //而list[i] 这里的i是循环的时候就给定的值,表示从list中取值操作,不存在异步的过程。 } http://www.cnblogs.com/afrog/p/4047699.htm
2014-11-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信