gpt4 book ai didi

javascript setTimeout 没有做我期望的事情

转载 作者:行者123 更新时间:2023-11-30 08:11:40 25 4
gpt4 key购买 nike

function myfunction()
{
window.setTimeout(alert('I waited for you.'),700000000);
}

我调用了这样的函数,我立即收到一条提示“我在等你”。

我最初将 7000 作为第二个参数,但一直将其推高以防它不是秒数。我显然希望该函数执行其他操作,但我将其分解为这个简单的示例以向自己证明问题出在哪里。

我的错误是什么?

最佳答案

你必须传递一个函数引用,而不是像这样执行 alert() 的结果:

function myfunction() {
window.setTimeout(function() {alert('I waited for you.')},700000000);
}

当您将 alert('I waited for you.') 传递给 setTimeout() 时,您是在告诉 javascript 解释器执行 alert('我等你。') 然后将返回结果传递给 setTimeout()。因为它会立即执行 alert() 语句并且 alert 不会返回供 setTimeout() 使用的函数,所以这显然不是您想要的。

相反,您想将函数引用传递给 setTimeout()。这可以通过我上面提供的示例中的匿名函数来完成,也可以通过单独的命名函数来完成,如下所示:

function myAlert() {
alert('I waited for you.');
}

function myfunction() {
window.setTimeout(myAlert, 700000000);
}

注意:对于更高级的用法,您实际上可以将立即执行的函数传递给 setTimeout(),只要该函数返回 setTimeout() 可以返回的函数引用待会儿再聊。但是,这显然不是您在这里尝试使用 alert()

的用法

关于javascript setTimeout 没有做我期望的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9503070/

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