用匿名函数传递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 , 到外面的函数中查找。

希望解答你的疑问,欢迎采纳,祝学习愉快。


0

0 学习 · 4826 问题

查看课程

相似问题