[英]Javascript - need help to understand why the while loop isn't working
我可能会问一个愚蠢的问题,但我确实需要对此做出确定的裁决。
我有2个while循环。
代码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>
代码2:
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++; } } }
<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>
第二块效果很好; 第一崩溃浏览器。 我的想法是第一个循环过多,无法猜测,但我无法弄清楚为什么会这样。
感谢任何愿意解释的人。
基本上,两种方法都可以正常工作。 您的第一个实现中只有一个逻辑错误。
挂掉第一号的原因是因为您不限制用户输入0-5
范围内的数字。 因此,超出该范围的任何数字都将永远循环,因为它将永远不会导致产生0-5
范围内的数字,而当您将随机数乘以6时,该数字将受到限制。
底线:要么选择选项2,要么验证用户是否实际输入了0-5范围内的数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.