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语句导致无限循环