【问题标题】:For loop skipping iterationsFor循环跳过迭代
【发布时间】:2021-01-25 03:46:29
【问题描述】:

我有一个 for 循环,它将遍历所有选择并为它们设置一个值。 出于某种原因,当我运行代码时,它会执行第一次迭代,然后跳到最后一次并执行 3 次左右,根据控制台。

代码:

for (i = 0; i < 4; i += 1) {
    console.log(i)
    var generated = word
    
    while (generated == word) {
        generated = wordsJson.characters[Math.floor(Math.random() * wordsJson.characters.length)]
    }

    choices[i].innerHTML = translate(generated)
}

我在控制台中得到什么:

    0
(3) 3

这是我第一次在 stackoverflow 上提问。如果您需要更多信息,请询问。

【问题讨论】:

  • 我注意到您没有在上面的 sn-p 中声明 i。您是否碰巧在代码的其他地方有另一个循环,您也使用i? (可能在translate?) 始终使用let、const 或var 声明变量,以便它们的范围适当,而不是全局
  • word 是什么?它来自哪里?
  • 如果word 未在外部上下文中定义,您的代码应显示error。
  • 就像 blex 说的那样。我整晚都在编码,一段时间后你往往会犯一些愚蠢的错误:p

标签: javascript html for-loop


【解决方案1】:

似乎变量i 正在for 循环之外进行修改。

通常您希望声明您的迭代器变量(在本例中为 i),以便将其范围限定为循环,如下所示:

for (let i = 0; i &lt; 4; i += 1) { ... }

注意,特别是添加let。由于您还没有这样做,这意味着 i 已经在某处显式声明,或者,如果没有,则表示您已经创建了一个新的全局变量 i。

因为你有你没有显示的代码似乎也与i (choices[i]) 和我们不知道 (translate()) 确切功能的方法有关,所以很难说当然,但那将是第一个看的地方。

如果没有,发布一些额外的代码以便我们查看其他功能会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多