我使用以下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循环索引变量?如果是这样,我可以把时间集中在调试上。
答案 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
作为前缀,否则它们被定义为全局变量。