1

I try to make a little game but if I start it it says : Uncaught RangeError: Maximum call stack size exceeded" What's wrong with my code? ;-)

function move(top,left){
    y_ball = $('#ball').offset().top - $('#spielfeld').offset().top;
    x_ball = $('#ball').offset().left - $('#spielfeld').offset().left;
    x_balken = $('#balken').offset().left - $('#spielfeld').offset().left;

    ball = document.getElementById('ball');
    balken = document.getElementById('balken');              

    if(y_ball >= 0 && y_ball < 465 && x_ball >= 0 && x_ball <= 500){
        ball.style.top = y_ball + top + "px";
        ball.style.left = x_ball + left + "px";
        setTimeout(move, 20 , top, left);
        return false;
    }

    if(y_ball == 0 || x_ball == 0 || x_ball == 500 || y_ball > 465){
        top = - top;
        left= - left;
        move(top,left);
        return false;
    }

    if(y_ball >= 465){
        if(-19 < x_ball - x_balken < 59){
            top = - top;
            left= - left;
            move(top,left);
        }
    }
}
A.Bau
  • 82
  • 1
  • 10
  • well.. it looks like you always end up calling move again in that function, eventually exceeding the maximum number of calls on the call stack. – toskv Oct 01 '15 at 17:09
  • best would be to do some debugging and see what happens when the code is ran. :) – toskv Oct 01 '15 at 17:10

1 Answers1

2

Suppose x_ball, y_ball, top, and left are all zero. You'll generate an infinite series of recursive calls to "move(0,0)", which will exhaust your stack.

Glenn Randers-Pehrson
  • 11,940
  • 3
  • 37
  • 61