繁体   English   中英

错误:嵌套在自我函数中的“未捕获的范围错误:超出最大调用堆栈大小”

[英]Error:“Uncaught RangeError: Maximum call stack size exceeded” nested in self function

我不断收到错误消息“未捕获的RangeError:超出最大调用堆栈大小”,并且将其范围缩小为以下代码:

//Play Button Checking
var checker = false;
var playButton = function(){
    if(mouseX > 100 && mouseX > 300 && mouseY > 150 && mouseY < 250 && mouseIsPressed){
        checker = true;
    } else {
        playButton();
    }
};
while(checker===false){
    playButton();
}

除非if语句中的鼠标条件为true,否则函数将递归调用自身。 由于它从不更新任何变量,因此如果在最初调用该函数时不正确,则它们永远不会变为真。

如果您有一个设置这些变量的事件处理程序,它将永远不会有运行的机会。 Javascript是单线程的,事件处理程序仅在您的代码返回到浏览器的主空闲循环时运行。

如果要在用户按下鼠标按钮时进行某些更改,则应将处理程序绑定到适当元素上的clickmousedown事件(如果它可以在文档中的任何位置,请将其附加到document元素)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM