4

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

下面的代码对我来说似乎应该从var tasksToDoat 3 开始,然后递减到 0,在途中跳过数字 2。

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

7 回答 7

3

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--;
}
于 2013-08-23T12:56:33.150 回答
1

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

于 2013-08-23T12:56:40.807 回答
0

应该是这样吗?

var tasksToDo = 3
while (tasksToDo > 0) {
if (tasksToDo == 2) {
 continue;
 console.log('there are ' + tasksToDo + ' tasks');
 }
tasksToDo--;
}
于 2013-08-23T19:02:26.543 回答
0

目前还不是很清楚你在做什么,但据我了解,你试图避免在内部执行逻辑 while fortasksToDo = 2

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

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

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

于 2013-08-23T12:59:12.123 回答
0

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

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

于 2013-08-23T12:56:18.710 回答
0

你正在使用continue;continue 你的循环永远用于 break;退出而不是continue;

于 2013-08-23T13:00:56.683 回答
0

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

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

这将创建一个无限循环!

改用“for”循环

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

var tasksToDo;

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

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

于 2017-11-06T08:49:56.133 回答