用匿名函数传递i值
来源:4-5 编程练习
qq_六尘缘影_0
2018-03-03 22:44:04
var oli=document.getElementsByTagName('li');
for(var i=0;i<oli.length;i++)
{
(function(n){
oli[i].onclick=function(){
alert(n);
}
})(i)
}
知道有这个方法可以解决这个问题,但不明白为什么这个方法可以解决,原理是什么,和作用域链又有什么关系
1回答
小于飞飞
2018-03-04
产生明白JS中的作用域(scope)。 每个函数在创建完成时,他有3个重要的内置属性(property)也同时被创建。
. 一个用于 //记录function内的变量,参数等信息
. this
. 一个指向指向外层函数记录(变量、参数等信息)
按如下写法:
var i; for(i=0;i<li.length;i++){ li[i].onclick = function(){ ... }; }
这个for循环即执行完毕,当onclick触发时,当 function查找变量 i 时,在其内部没有找到,所到外找,这个i 已经是 for循环完的值。
用上面提供的方法:
里面的函数 没有 n , 到外面的函数中查找。
希望解答你的疑问,欢迎采纳,祝学习愉快。
相似问题