简单 do/while loop 无限循环问题

simple do/while loop infinite loop issue

好的,首先,我是 javascript 的新手,正在学习一些教程来尝试学习这门语言。我的问题可能非常简单,但我想不通!

好的,我做了一个非常简单的 do/while 循环。所有这些应该做的就是向控制台打印一次 "do condition, only once" 并向控制台打印 "do" 5 次。

然而它进入了无限循环..可能是因为我在错误的地方定义了变量 "doCondition",但我无法弄清楚在逻辑上我应该把它放在哪里。

非常感谢您的帮助!如果你也能解释一下我哪里出错了,我将不胜感激

非常感谢,

var doWhileLoop = function(text){
var doCondition = 5;
    do {
    console.log("do condition, once only");
};

while(doCondition > 0){
    console.log(text);
    doCondition--;
}
}

doWhileLoop("do");

do..虽然语法不正确,但在您的情况下,它就像

var doWhileLoop = function(text) {
  var doCondition = 5;
  //beginning of loop
  do {
    console.log(text, doCondition);
    doCondition--;
  } while (doCondition > 0); //end of loop
};

doWhileLoop("do");
open console....

编辑

当条件失败时,while 循环体不会执行

var whileLoop = function(text) {
  var condition = 0;
  //beginning of loop
  while (condition > 0) {
    console.log(text, condition);
    condition--;
  } //end of loop
};

whileLoop("while");
open console....

do while 循环体即使条件失败也会执行一次

var doWhileLoop = function(text) {
  var condition = 0;
  //beginning of loop
  do {
    console.log(text, condition);
    condition--;
  } while (condition > 0); //end of loop
};

doWhileLoop("do while");
open console....

这是预条件循环 (while(condition) {...}) 和 post 条件循环 (do{...}while(condition);) 之间的区别。

主要区别在于 post 条件循环将 始终 运行 代码块 至少一次 在评估条件之前,而预条件循环将首先尝试在 运行 其代码块

之前评估条件

在您的示例中,您忘记了 post 条件循环中的条件,因此它会永远循环。

参考文献:

这不是因为变量 doCondition。这是因为你正在写你的 do-while 错误。看看这个。

  var doWhileLoop = function(text){

var doCondition = 5;
    do {
    console.log("do condition, once only");
    doCondition--;
}while(doCondition > 0)
}

doWhileLoop("do");

您拥有的不是单个循环,而是两个独立的循环。 do {} while() 循环和 while() {} 循环的区别仅在于是在每次迭代之前还是之后评估条件。

do...while 循环中没有初始 "do once" 步骤。把你想执行一次的代码放在循环之前:

var doWhileLoop = function(text){
  var doCondition = 5;
  console.log("do condition, once only");
  do {
    console.log(text);
    doCondition--;
  while (doCondition > 0);
};

doWhileLoop("do");