2016-11-04 00:23发布
在这个点击事件函数中,为了记录点击的参数按钮的参数是多少定义index变量并赋值,但是为什么这句话一定要放在外面的函数才生效,而放在点击函数里面却会出现报错
先上一张正确的图
下面这张是错误的图
第二张图 i 的值是循环结束后最后的值。
的确是函数闭包问题。第一种
相当于把 i 赋值给 oLi的一个属性 index,这样相当于每个oLi[i] 保存着对应的i 比如:oLi[1].index==1,oLi[2].index==2 然后后面可以通过 this.index 来改变相应的 类名。第二种因为 i 在 oLi.onclick 的事件中会用到,所以导致包含函数不会被销毁,其作用域也不会被销毁 所以i还存在于包含函数的作用域中 这样 for循环完后 i 的值就等于oLi.length的值,所以每个点击事件中的i 值都等于oLi.length的值。
i
oLi
index
oLi[i]
oLi[1].index==1,oLi[2].index==2
this.index
oLi.onclick
包含函数不会被销毁,其作用域也不会被销毁
包含函数的作用域中
for
oLi.length
你自己都说了是闭包问题了。
最多设置5个标签!
付费偷看金额在0.1-10元之间
第二张图 i 的值是循环结束后最后的值。
的确是函数闭包问题。
第一种
相当于把
i
赋值给oLi
的一个属性index
,这样相当于每个oLi[i]
保存着对应的i
比如:oLi[1].index==1,oLi[2].index==2
然后后面可以通过this.index
来改变相应的 类名。第二种
因为
i
在oLi.onclick
的事件中会用到,所以导致包含函数不会被销毁,其作用域也不会被销毁
所以i
还存在于包含函数的作用域中
这样for
循环完后i
的值就等于oLi.length
的值,所以每个点击事件中的i
值都等于oLi.length
的值。你自己都说了是闭包问题了。
一周热门 更多>