【问题标题】:Javascript continue statement in while loop causes an infinite loopwhile循环中的Javascript continue语句导致无限循环
【发布时间】:2013-08-26 12:59:32
【问题描述】:

我正在尝试使用 continue 语句创建 while 循环。然而,它似乎导致了一个无限循环,我不知道为什么。

对我来说,下面的代码似乎应该以 var tasksToDo 开头 3 然后递减到 0 跳过数字 2。

var tasksToDo = 3
while (tasksToDo > 0) {
    if (tasksToDo == 2) {
        continue;
    }
    console.log('there are ' + tasksToDo + ' tasks');
    tasksToDo--;
}

【问题讨论】:

    标签: javascript while-loop infinite-loop continue


    【解决方案1】:

    conitnue,将返回 while 循环。并且 tasksToDo 的递减量永远不会超过 2。

    var tasksToDo = 3
    while (tasksToDo > 0) {
    if (tasksToDo == 2) {
     tasksToDo--;             // Should be here too.
     continue;
    }
    
    console.log('there are ' + tasksToDo + ' tasks');
    tasksToDo--;
    }
    

    【讨论】:

      【解决方案2】:

      continue 导致循环跳过递减并重新开始。一旦tasksToDo 命中 2,它将永远保持为 2。

      【讨论】:

        【解决方案3】:

        continue 让你回到循环的开头。您可能想改用break

        或者也许在 if 块之前 减量。

        【讨论】:

          【解决方案4】:

          不清楚你在做什么,但据我了解,你试图避免在 tasksToDo = 2 内部执行逻辑

          var tasksToDo = 3
          while (tasksToDo > 0) {
              if (tasksToDo != 2) {
                  console.log('there are ' + tasksToDo + ' tasks');
              }
              tasksToDo--;
          }
          

          tasksToDo = 2 的情况下添加中断是没有意义的,因为将条件添加到while (tasksToDo > 2) 会更容易。

          这里的代码可能与你的真实代码完全不同,所以我可能会遗漏一些东西。

          【讨论】:

            【解决方案5】:

            您正在使用 continue; 永远继续您的循环 使用break; 退出而不是continue;

            【讨论】:

              【解决方案6】:

              应该是这样吗?

              var tasksToDo = 3
              while (tasksToDo > 0) {
              if (tasksToDo == 2) {
               continue;
               console.log('there are ' + tasksToDo + ' tasks');
               }
              tasksToDo--;
              }
              

              【讨论】:

              • 是的,这是我被赋予使用的代码,但我想由于上面的一些答案,我知道发生了什么。
              【解决方案7】:

              “继续;”语句阻止执行代码块中的所有剩余声明。

              因此,在循环到达“i == 2”之后,不再执行“tasksDo--”减量。

              这将创建一个无限循环!

              改用“for”循环

              这种情况下的“for”循环解决方案

              var tasksToDo;
              
              for (tasksToDo = 3; tasksToDo > 0; tasksToDo--){
                  if (tasksToDo == 2) { continue; }
                  console.log('there are ' + tasksToDo + ' tasks');
              }
              

              (for 循环接受递减作为它的第三条语句!)

              【讨论】:

              • 您还应该建议如何通过反转一些代码行来解决此问题
              猜你喜欢
              • 2015-01-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-05-12
              • 2013-05-17
              • 2013-03-26
              • 2016-10-07
              相关资源
              最近更新 更多