未捕获范围错误:超出最大调用堆栈大小(执行背景颜色切换器功能时)

Uncaught RangeError: Maximum call stack size exceeded (when doing a background color switcher function)

本文关键字:执行 背景 颜色 功能 切换器 堆栈 调用 范围 错误      更新时间:2023-09-26
$(window).load(function() {
//Taste the rainbow :)
spectrum();
function spectrum(){
var colorHex = ["#d1ff00", "#ff009c", "#00f0ff", "#707df7", "#ff9000" ];
var colors = colorHex[Math.floor(Math.random()*colorHex.length)];
$('#splash-banner').animate( { backgroundColor: colors }, 4000);
spectrum();
}
});

铬表示频谱功能存在某种错误。看起来可能会有一个无限循环。有人可以给我一些指示吗?谢谢

.animate()不会阻塞,因此您的spectrum()调用将在执行spectrum立即执行,并且该过程将重新开始。

将其作为回调传入:

$('#splash-banner').animate( { backgroundColor: colors }, 4000, spectrum);

大约 9000 次迭代后,您会遇到堆栈溢出,但这可能不会成为问题。