Javascript参数中的“索​​引”是什么?

时间:2015-12-25 22:52:34

标签: javascript

 var g = document.getElementById('my_div');
for (var i = 0, len = g.children.length; i < len; i++)
{

    (function(index){
        g.children[i].onclick = function(){
              alert(index)  ;
        }    
    })(i);

}

所以我看到上面的例子展示了如何获取被点击元素的索引。我注意到它使用“index”作为参数。不幸的是我只知道indexof所以这是如何工作的?谷歌搜索时无法找到关于“索引”的任何内容:javascript索引属性或javascript索引参数。

编辑:我真的没有看到函数调用(i)因为它太小了。

2 个答案:

答案 0 :(得分:2)

其他答案和评论都是正确的,index在这种情况下只是一个函数参数,但我会(尝试)解释一下这里发生了什么。

正如其他人所说,index只是一个变量,在这种情况下是函数的参数。这里的名称index没有什么特别之处,可能是argument1vader :-),或其他什么。

所发生的事情是这个函数被声明:

function(arg1){
        g.children[i].onclick = function(){
              alert(arg1)  ;
        }    
    }

我已将index替换为arg1以显示index并非特殊,尽管它与index一起正常工作。在声明了该函数之后,通过将其包装在parens中,然后传递参数i(i)),将其称为 。这将调用该函数,将当前值i分配给函数的第一个参数,arg1此处或原始index。该函数声明另一个函数,这次

function() {alert(arg1);}

并将其分配给i'th数组的g.children元素的onclick处理程序。因此,每个onclick处理程序都将是一个只对数组元素的索引发出警报的函数。

如果你在调试器中逐步完成循环,你会看到它有效:

g.children[0].onclick = function(){ alert(0); };
g.children[1].onclick = function(){ alert(1); };
g.children[2].onclick = function(){ alert(2); };

答案 1 :(得分:1)

代码:

 (function(index){
        g.children[i].onclick = function(){
              alert(index)  ;
        }    
    })(i);

是一个自动执行的函数,使用值的参数 i 调用。

简单示例

function a(arg1) {
    console.log(arg1);
}
a(10); //console.log(10);

你可以这样做:

(function (arg1) {
  console.log(arg1);
})(10); //console.log(10);