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

Javascript 对于使用helper方法修改的循环索引变量?,javascript,for-loop,Javascript,For Loop,我正在使用下面的for循环,正如下面所写的那样,它会像应该的那样提醒0、1、2、3、4、5、6、7、8,但当我取消注释setbutions时,它会提醒0、2、4、6、8 我对这种行为感到非常困惑,因为我一直假设整数是通过值传递的,而不是引用 是否可以在函数方法(如my set方法)中修改for循环索引变量?如果是这样,我可以把时间集中在调试上。您必须在set方法中增加I 由于您没有通过在var关键字前加前缀将i描述为局部变量,所以在for循环中它被视为全局变量。 因此,在集合方法中进行了修改。

我正在使用下面的for循环,正如下面所写的那样,它会像应该的那样提醒0、1、2、3、4、5、6、7、8,但当我取消注释setbutions时,它会提醒0、2、4、6、8

我对这种行为感到非常困惑,因为我一直假设整数是通过值传递的,而不是引用

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

您必须在set方法中增加I

由于您没有通过在var关键字前加前缀将i描述为局部变量,所以在for循环中它被视为全局变量。 因此,在集合方法中进行了修改。 在javascript中,声明一个变量时要在其前面加上var,否则它们将被定义为全局变量。

您必须在set方法中增加i

由于您没有通过在var关键字前加前缀将i描述为局部变量,所以在for循环中它被视为全局变量。 因此,在集合方法中进行了修改。
在javascript中,声明一个变量时在其前面加上变量前缀,否则它们将被定义为全局变量。

这看起来像是由于省略了变量而导致的。请更新第一行内容:

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

有关更多信息,请参阅本页:

这看起来像是由于遗漏了变量而导致的。请更新第一行内容:

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

有关更多信息,请参阅本页:

原语按值传递。集合的代码是什么?它使用变量i吗?您是否在函数中声明了它?您在问题中提供的代码不会重现您遇到的问题。您可能应该在for循环本身中声明i,而不是引用全局变量i。我按照它返回到这个for循环,但我现在明白这是一个范围问题。添加var i=0实际上解决了这个问题。原语是按值传递的。集合的代码是什么?它使用变量i吗?您是否在函数中声明了它?您在问题中提供的代码不会重现您遇到的问题。您可能应该在for循环本身中声明i,而不是引用全局变量i。我按照它返回到这个for循环,但我现在明白这是一个范围问题。添加var i=0实际上解决了这个问题。set函数还需要将i声明为局部变量。set函数还需要将i声明为局部变量。