gpt4 book ai didi

javascript - 在定时器上调用 Javascript 匿名函数方法

转载 作者:行者123 更新时间:2023-11-29 15:01:50 25 4
gpt4 key购买 nike

我正在为明天工作的最后一天用 javascript 创建一个烟花表演,但我在让它自动化时遇到了一些问题。我正在使用发现的烟花 here它工作得很好,但这将出现在我不久前开发的状态网页上,所以我希望烟花是自动的,而不是点击时。

我在 fireworks.js 页面上创建了一个如下所示的函数...

function fireFireworks(){
var num = Math.floor(Math.random()*3) + 1;
for(i=0;i<num;i++){
createFirework();
}
}

这将用于在调用时发射 1 到 3 个烟花。然后我设置

setInterval('fireFireworks()', 5000);

当这两个都在我的本地文件而不是 fireworks.js 文件中定义时,我得到了对 createFirework() 的错误引用。

所以我将 fireFireworks() 移动到 fireworks.js 中的初始化函数下面,然后我会得到对 fireFireworks() 的错误引用,所以我移动了我的setIntervalintialize 函数中,但我仍然得到对 fireFireworks() 的错误引用。

但是,如果我将 onmouseup 的 Binder 从 document.addEventListener('mouseup', createFireworks, true);到 document.addEventListener('mouseup', fireFireworks, true);

它成功地创建了我的多个烟花。

我假设 setInterval 的作用域在这里起作用。如果有人能告诉我如何自动执行此操作以及有关为什么我的设置不起作用的一些信息,我将非常感激!

最佳答案

最好将函数本身传递给setInterval,即

setInterval (fireFireworks, 5000)

至于作用域,如果您的 createFireworks 函数未在其他任何地方使用,只需将它放在 inside fireFireworks 中即可不必再担心它了(通常认为这样做更好,因为它避免了污染全局范围)。

否则,将两个函数包装在一个闭包中:

(function ()
{
function fireFireworks ()
{
/* ... */
}

function createFirework ()
{
/* ... */
}

setInterval (fireFireworks, 5000)

}) ();

关于javascript - 在定时器上调用 Javascript 匿名函数方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com