【问题标题】:simple do/while loop infinite loop issue简单的 do/while 循环无限循环问题
【发布时间】:2015-02-06 12:12:24
【问题描述】:

好的,首先,我对 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块?..你想这样实现...jsfiddle.net/c5yhpav9
  • 在 do 之后删除分号并尝试这种语法 do{} while(condition)
  • 该代码根本不会运行,因为第一个循环中的语法错误。您使用的实际代码是什么样的?

标签: javascript loops do-while


【解决方案1】:

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....

【讨论】:

  • 我可能完全误解了 do/while 循环,但我认为它们用于单独运行 do 语句和 while 语句?所以不管 while 条件如何,do 都会运行一次?
  • 是的,你是对的。 Do while 只执行一次,下一次迭代将取决于 while 条件。这里唯一的问题是 do while 语法。
  • 啊...我想我明白了。我在想 do 语句将完全独立于 while 条件运行。因此,如果我有一个带有 while 条件的 do/while 语句将其限制为 5 次,那么该语句实际上会运行 6 次,一次用于 do,5 次用于 while?而无论是否满足 while 条件,do 都会运行一次,但如果满足,它将像正常的 while 一样运行?
【解决方案2】:

这不是因为变量 doCondition。这是因为你写错了。看看这个。

  var doWhileLoop = function(text){

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

doWhileLoop("do");

【讨论】:

    【解决方案3】:

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

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

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

    参考文献:

    【讨论】:

      【解决方案4】:

      您拥有的不是一个循环,而是两个独立的循环。 do {} while() 循环和while() {} 循环仅在每次迭代之前或之后评估条件方面有所不同。

      do...while 循环中没有初始的“执行一次”步骤。只需将要执行一次的代码放在循环之前即可:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多