是否可以删除最大调用堆栈大小?

时间:2014-12-07 15:46:49

标签: javascript jquery

我正在制作一个奇怪的块运动物,但在它移动了10次后它说:

Uncaught RangeError: Maximum call stack size exceeded

我的目的是让它一直移动,这是代码BTW:

<html>
    <head>
        <title>Look - The game</title>
    </head>
    <body>
        <div id="square" style="position:absolute; width:5px; height:5px; background:black"></div>
        <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
        <script>
            var square = document.getElementById("square");
            var duration = 1000;
            var steps = 1;
            function movesquare(){
                var randomtop = Math.floor(Math.random() * screen.height);
                var randomleft = Math.floor(Math.random() * screen.width);
                $(square).animate({marginTop:randomtop, marginLeft:randomleft}, duration, movesquare);
                duration -= steps;
                steps = steps * 2;
            }
            movesquare();
        </script>
    </body>

1 个答案:

答案 0 :(得分:3)

你的问题是:

$(square).animate({marginTop:randomtop, marginLeft:randomleft}, duration, movesquare);

movesquareduration或更小时,会立即致电0。 在发生这种情况时,您创建了一个无限循环

您需要确保duration不会成为0