최 호출 스택 크기를 초과하는 동안 setTimeout Call

나는'm 하려고 전화하는 기능 4 초에 그래서 그것을 증가시킵호이다. 어떤 이유에도 오류가 있습니다. 여기's 내 코드:

<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>
질문에 대한 의견 (1)
해결책

getNum,you'다시 직접를 호출하여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);   // 
해설 (4)

문제를 귀하의 전화setTimeout 는호출getNum대신에 스케쥴을 위해 그것을 실행합니다. 이것을 무한 재귀와 스택 오버플로우가 발생합니다. 시도하고 대신 다음

setTimeout(getNum, 4000);
해설 (1)

setTimeOut해야setTimeout

해설 (0)