【问题标题】:Infinite While loop mod 3无限循环模式 3
【发布时间】:2019-11-13 19:16:28
【问题描述】:

我基本上只是想打印数字列表,跳过 3 的倍数。我让它工作,但我尝试的最初方法不起作用,我不明白为什么,只需要有人解释为什么它不起作用并进入无限循环。

这就是问题所在,为什么会陷入死循环?如果有人可以提供帮助,我显然错过了关于代码的关键概念。

var i = 0;
     while (i <= 10) {
         if (i % 3 == 0) {
            continue;
        }


       document.write( i + "</br>");
         i++;
        }

我知道你可以这样做。

while (i <= 10) 
{

     if (i % 3 != 0) {

        document.write("Number is " + i + "<br />");  

    }

   i++

 }

【问题讨论】:

标签: javascript while-loop


【解决方案1】:

continue 跳转到下一个迭代并且不会完成while 中的其余代码。所以i 没有被增加,而是保持为0,因为你在增加i 之前写了continue。所以因此它处于无限循环中,它总是小于 10

【讨论】:

    【解决方案2】:

    如果我们忽略产生输出的代码,只查看代码检查和修改i,可能会更清楚为什么它不起作用。它还有助于format our code 以获得额外的清晰度。

    var i = 0;
    
    while (i <= 10) {
      if (i % 3 == 0) {
        continue;
      }
    
      i++;
    }
    
    • i = 0开头。
    • i &lt;= 10true。进入循环。
    • i % 3 == 0true。输入if 块。
    • continue;。再次直接转到while 循环的顶部。不要通过i++;。请勿收集1
    • 泡沫。冲洗。重复(无限次)。

    【讨论】:

    • 谢谢,我认为 continue 意味着继续下一行,Break 意味着回到循环顶部?
    • for(var i = 0; i "); }
    • 在上面的情况下它没有回到for循环的顶部,它仍然是document.write?所以它仍然完成了循环,那么为什么有一段时间循环没有完成循环呢?我不想争论只是想理解。谢谢
    • @Mathew 它确实到了循环的顶部,你瞧!上面有一个i++break 刚刚退出循环。
    • @Mathew continue 跳过当前迭代的其余部分并开始下一个迭代。 break 跳出循环,有效地结束了它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多