为什么这个do-while循环无限?

时间:2016-03-26 21:00:20

标签: javascript loops while-loop do-while

我正在学习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();

3 个答案:

答案 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;
};