繁体   English   中英

Javascript-需要帮助以了解while循环为何不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM