我一直收到错误“Uncaught 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();
}
答案 0 :(得分:1)
除非if
语句中的鼠标条件为真,否则您的函数会递归调用自身。因为它永远不会更新任何变量,所以如果在最初调用函数时它们不是真的,它们将永远不会变为真。
如果你有一个设置这些变量的事件处理程序,它将永远不会有机会运行。 Javascript是单线程的,事件处理程序仅在代码返回浏览器的主空闲循环时运行。
如果您想在用户按下鼠标按钮时更改某些内容,则应将处理程序绑定到相应元素上的click
或mousedown
事件(如果它可以位于文档中的任何位置,将其附加到document
元素。)