对于使用辅助方法修改的循环索引变量?

时间:2016-05-27 20:43:28

标签: javascript for-loop

我使用以下for循环,因为它写在下面它警告 0,1,2,3,4,5,6,7,8 (就像它应该)但是当我取消注释set(buttons, i)时,它会提醒 0,2,4,6,8

for(i = 0; i < layerOrder.length; i++){
    alert(i);
    //set(buttons, i);
}

我对此行为感到非常困惑,因为我一直认为整数是通过值传递而不是引用。

是否可以在我的set()方法中修改函数方法中的for循环索引变量?如果是这样,我可以把时间集中在调试上。

2 个答案:

答案 0 :(得分:3)

这看起来像是由于遗漏了var而引起的。请将您的第一行更新为:

for(var i = 0; i < layerOrder.length; i++){

有关详细信息,请参阅此页面:"var" or no "var" in JavaScript's "for-in" loop?

答案 1 :(得分:1)

您必须在set方法中递增i

由于您没有通过添加i关键字前缀将var描述为局部变量,因此它被视为for循环中的全局变量。 因此在set方法中进行了修改。 在javascript中声明变量在本地用var作为前缀,否则它们被定义为全局变量。