Javascript - 需要帮助才能理解为什么while循环不起作用

时间:2017-02-05 19:37:42

标签: javascript while-loop

我可能会问一个愚蠢的问题,但我真的需要对此作出明确的判决。

我有2个循环。

代码1:



document.getElementById("guess").onclick = function() {

  var myNumber = document.getElementById("myNumber").value;
  var gotIt = false;
  var numberOfGuesses = 1;

  while (gotIt == false) {

    var guess = Math.random();
    guess = guess * 6;
    guess = Math.floor(guess);

    if (guess == myNumber) {

      gotIt = true;

      alert("Got it! It was a " + guess + ". It took me " + numberOfGuesses + " guesses.");

    } else {

      numberOfGuesses++;
    }
  }
}

<input type="text" name="" id="myNumber">
<button id="guess">Guess!</button>
&#13;
&#13;
&#13;

代码2:

&#13;
&#13;
document.getElementById("guess").onclick = function() {

  var myNumber = document.getElementById("myNumber").value;
  var gotIt = false;
  var numberOfGuesses = 1;

  while (gotIt == false) {

    var guess = Math.random();
    guess = guess * 6;
    guess = Math.floor(guess);

    if (guess == myNumber) {

      gotIt = true;
      alert("Got it! It was a " + guess + ". It took me " + numberOfGuesses + " guesses.");
    } else {
      numberOfGuesses++;
    }
  }
}
&#13;
<select id="myNumber">
  <option>0</option>
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
  <option>5</option>
</select>

<button id="guess">Guess!</button>
&#13;
&#13;
&#13;

第二件作品很好;第一个崩溃了浏览器。我的想法是第一个是采用太多的循环来猜测,但我不能弄清楚为什么会发生这种情况。

感谢愿意解释的人。

1 个答案:

答案 0 :(得分:0)

基本上两种方法都可以正常工作。您在第一次实施时遇到一点逻辑错误。

您排名第一的原因是您不会限制用户输入0-5范围内的数字。因此,该范围之外的任何数字都将永远循环,因为它永远不会产生0-5范围的数量,当将随机乘以6时,您必须限制此范围。

底线: 使用选项2,或验证用户实际输入的数字范围为0-5。