while循环中的Javascript continue语句导致无限循环

Posted

技术标签:

【中文标题】while循环中的Javascript continue语句导致无限循环【英文标题】:Javascript continue statement in while loop causes an infinite loop 【发布时间】: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--;

【问题讨论】:

【参考方案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 循环接受递减作为它的第三条语句!)

【讨论】:

您还应该建议如何通过反转一些代码行来解决此问题

以上是关于while循环中的Javascript continue语句导致无限循环的主要内容,如果未能解决你的问题,请参考以下文章

while循环中的Javascript continue语句导致无限循环

while 循环中的赋值 - Javascript

JavaScript 中的反向 while 循环如何知道何时停止?

在 Javascript 中的 while 循环内创建暂停

JavaScript 循环

(JavaScript) 为啥 while 循环中的“if”中的 continue 语句会使浏览器崩溃?