我可能会问一个愚蠢的问题,但我真的需要对此作出明确的判决。
我有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;
代码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++;
}
}
}
&#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;
第二件作品很好;第一个崩溃了浏览器。我的想法是第一个是采用太多的循环来猜测,但我不能弄清楚为什么会发生这种情况。
感谢愿意解释的人。
答案 0 :(得分:0)
基本上两种方法都可以正常工作。您在第一次实施时遇到一点逻辑错误。
您排名第一的原因是您不会限制用户输入0-5
范围内的数字。因此,该范围之外的任何数字都将永远循环,因为它永远不会产生0-5
范围的数量,当将随机乘以6时,您必须限制此范围。
底线: 使用选项2,或验证用户实际输入的数字范围为0-5。