我正在学习do-while循环,我无法理解为什么这个循环无限运行。
var condition = true
var getToDaChoppa = function(){
do {
console.log("I'm the do loop");
} while(condition === true){
console.log("I'm the while loop");
condition = false;
};
};
getToDaChoppa();
答案 0 :(得分:3)
您从未将condition
变量设置为false
INSIDE 循环,因此在此循环完成之前,它永远不会执行循环外的任何代码(鉴于你目前的例子,我们永远不会发生。确保在循环内将condition
变量设置为false
:
do {
console.log("I'm the do loop");
if (some_condition_is_met) {
condition = false;
}
} while(condition === true);
答案 1 :(得分:2)
Do / While是这样的。所以你永远不要改变循环中的condition
。
do {
//code block to be executed
}
while (condition);
//Code after do/while
答案 2 :(得分:0)
有一个do..while
并且有一个while..
:没有do..while..
声明。
JavaScript允许block statements独立于其他流控制/定义结构。由于缺少必需的语句分号,这不会导致语法错误(在Java中会出现错误)。
以下是与语法相关的一些补充说明;其他答案涵盖了逻辑错误。
do {
console.log("I'm the do loop");
} while(condition === true) // semicolons optional in JS (see ASI):
// 'do..while' statement ENDS HERE
{ // starts a block statement which has naught to do with 'do..while' above
// THERE IS NO WHILE LOOP HERE
console.log("I'm the while loop");
condition = false;
}; // useless semicolon which further leads to confusion
另一方面,如果省略do..
,它将被解析为"只是"一个while
语句将终止。
// Basic WHILE statement - no 'do..' code, so NOT parsed as a 'do..while'!
while(condition === true)
{ // this block is now part of the 'while' statement loop
console.log("I'm the while loop");
condition = false;
};