[英]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是单线程的,事件处理程序仅在您的代码返回到浏览器的主空闲循环时运行。
如果要在用户按下鼠标按钮时进行某些更改,则应将处理程序绑定到适当元素上的click
或mousedown
事件(如果它可以在文档中的任何位置,请将其附加到document
元素)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.