javascript - 在 setTimeout 调用期间超过最大调用堆栈大小

标签 javascript html time

我尝试每 4 秒调用一次我的函数,这样它就会实时递增一个数字。出于某种原因,我不断收到错误。这是我的代码:

<html>
<head>
<title>Recycle Counter</title>
<script type="text/javascript">
    function rand(from, to)
    {
       return Math.floor(Math.random() * (to - from + 1) + from); // Generates random number
    }   

    var num = rand(10000, 100000);

    function getNum() // Gets triggered by page load so innerHTML works
    {
        document.getElementById('counter').innerHTML = num + 7;
        setTimeOut(getNum(), 4000);
    }   
</script>
</head>
<body onload="getNum()">
    <div id="counter">

    </div>
</body>
</html>

最佳答案

getNum 中,您直接调用了 getNum 函数,导致堆栈耗尽。将函数调用 getNum() 替换为函数引用 getNum:

function getNum() // Gets triggered by page load so innerHTML works
{
    num += 7;     // Increase and assign variable
    document.getElementById('counter').innerHTML = num;
    setTimeout(getNum, 4000);   // <-- The correct way
}

链接到 setTimeout 的文档.

关于javascript - 在 setTimeout 调用期间超过最大调用堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8731840/

相关文章:

javascript - 将 json 对象内容附加到 div elem 中作为列表输出

javascript - 从 ajax 调用成功内部访问变量

javascript - 简单的 AddListener,适用于代码笔但不适用于 Chrome 浏览器

javascript - 清除每个事件处理程序

javascript - 谷歌地图可以有透明背景吗?

html - Angular5 在用 ngfor 显示它的同时在数组中插入元素

html - 如何同时过渡嵌套子项的颜色

java - 在android中比较日期与毫秒

go - 在 Go 中获取最新的 "Monday 05:30"Unix 时间?

php - PHP 中关于 time() 函数的困惑