猿问

JS中的while循环会减慢浏览器的速度

我正在编写一个代码,该代码应该猜测用户输入的数字并返回一个带有字符串的段落以及脚本获取该数字所需的尝试次数。没什么太花哨的。问题是,一旦我在 Firefox 上启动页面,它基本上就崩溃了,我不知道为什么。


谢谢您的帮助。


这是我的代码:


    <input id="guess" placeholder="Your Number">

    <button id="guessButton">Guess it!</button>

    <br>

    <div id="scriptOutput"></div>


    <script>

        var myNumber = document.getElementById("guess").value

        var guess = false

        var scriptGuess = Math.random()

        scriptGuess = scriptGuess*6

        scriptGuess = Math.floor(scriptGuess)

        var guessCount = 1



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


            while (guess == false) {


                if (myNumber == scriptGuess) {

                    document.getElementById("scriptOutput").innerHTML = "<p>" + "I got it after" + guessCount + "times!" + "</p>";

                    guess = true;


                }else {

                    guessCount ++;


                }

            }

        }


    </script>


</body>


守候你守候我
浏览 137回答 1
1回答

肥皂起泡泡

您scriptGuess在 while 循环之前定义,因此,每次 while 循环运行时,scriptGuess都不会改变。这正在创建一个无限循环。尝试在 while 循环中添加猜测逻辑。这样,scriptGuess在 while 循环的每个实例中都会初始化一个新值:<body>&nbsp; &nbsp; <input id="guess" placeholder="Your Number">&nbsp; &nbsp; <button id="guessButton">Guess it!</button>&nbsp; &nbsp; <br>&nbsp; &nbsp; <div id="scriptOutput"></div>&nbsp; &nbsp; <script>&nbsp; &nbsp; &nbsp; &nbsp; var myNumber = document.getElementById("guess").value&nbsp; &nbsp; &nbsp; &nbsp; var guess = false&nbsp; &nbsp; &nbsp; &nbsp; var guessCount = 1&nbsp; &nbsp; &nbsp; &nbsp; document.getElementById("guessButton").onclick = function () {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (guess == false) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var scriptGuess = Math.random()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scriptGuess = scriptGuess * 6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scriptGuess = Math.floor(scriptGuess)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (myNumber == scriptGuess) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.getElementById("scriptOutput").innerHTML = "<p>" + "I got it after" + guessCount + "times!" + "</p>";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; guess = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; guessCount++;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; </script></body>但是,我仍然认为您会遇到时间复杂度的问题。这将花费大量时间来猜测用户输入的数字,尤其是在没有预先确定的范围的情况下。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答