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

时间:2013-08-23 12:55:01

标签: javascript while-loop infinite-loop continue

我正在尝试使用continue语句创建while循环。然而它似乎导致无限循环,我无法弄清楚为什么。

下面的代码似乎应该从var tasksToDo开始,然后在途中减少到0跳过数字2。

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

7 个答案:

答案 0 :(得分: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--;
}

答案 1 :(得分:1)

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

答案 2 :(得分:0)

continue让你回到循环的开头。您可能希望改为使用break

或者可以在 if阻止之前减少

答案 3 :(得分:0)

目前还不是很清楚你在做什么,但据我所知,你正试图避免在tasksToDo = 2

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

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

此处的代码可能与您的真实代码完全不同,但我可能会遗漏某些内容。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

应该是这样吗?

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

答案 6 :(得分: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循环将减量作为第3个语句接受!)