gpt4 book ai didi

javascript - setTimeout - 如何避免使用字符串进行回调?

转载 作者:可可西里 更新时间:2023-11-01 01:55:31 25 4
gpt4 key购买 nike

使用setTimeout时,必须将要执行的代码放入字符串中:

setTimeout('alert("foobar!");', 1000);

但是,我想执行一个在变量中有引用的函数。我希望能够做到这一点:

var myGreatFunction = function() { alert("foobar!"); };
// ...
setTimeout('myGreatFunction();', 1000);

(尽管在现实生活中,警报是一段较长的代码,myGreatFunction 作为参数传递给其他函数,其中调用了 setTimeout。 )

当然,当超时触发时,myGreatFunction 不是可识别的函数,因此它不会执行。

我希望 javascript 让我这样做,但它没有:

setTimeout(function() { myGreatFunction(); }, 1000);

有什么好的解决方法吗?

最佳答案

如果您不需要使用任何参数调用 myGreatFunction,您应该能够向 setTimeout 传递一个函数引用:

setTimeout(myGreatFunction, 1000);

此外,您应该始终避免传递需要评估的 setTimeout 代码(当您将代码括在引号中时会发生这种情况)。相反,将代码包装在一个匿名函数中:

setTimeout(function() {
// Code here...
}, 1000);

参见 setTimeout page at the Mozilla Development Centre获取更多信息。

史蒂夫

关于javascript - setTimeout - 如何避免使用字符串进行回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/797115/

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