【问题标题】:Maximum call stack size exceeded超出最大调用堆栈大小
【发布时间】:2015-12-29 19:58:56
【问题描述】:

我尝试制作一个小游戏,但如果我启动它,它会显示:Uncaught RangeError: Maximum call stack size exceeded" 我的代码有什么问题? ;-)

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);
        }
    }
}

【问题讨论】:

  • 好吧..看起来你总是在那个函数中再次调用 move ,最终超过调用堆栈上的最大调用次数。
  • 最好是做一些调试,看看代码运行时会发生什么。 :)

标签: javascript stack size max call


【解决方案1】:

假设 x_ball、y_ball、top 和 left 都为零。 您将生成对“move(0,0)”的无限系列递归调用,这将耗尽您的堆栈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 2017-12-27
    • 2020-12-06
    • 2018-02-06
    • 2020-06-28
    • 2016-02-28
    • 2019-05-21
    • 2019-05-29
    相关资源
    最近更新 更多