0

为什么在 3 秒后重复调用该函数?

<button onclick="myFunction()">Try it</button>

<script>
    function myFunction()
    {
        alert("hello");
        setTimeout(myFunction(),3000);
        // setTimeout(function(){ alert("Hello") }, 3000);
     }
</script>
4

3 回答 3

5

myFunction立即调用,然后将其返回值 ( undefined) 传递给setTimeout

删除,()以便您传递函数而不是调用它。

改变:

setTimeout(myFunction(),3000);

至:

setTimeout(myFunction,3000);
于 2013-04-17T12:37:07.170 回答
3

看看这段代码

setTimeout(myFunction(),3000);

()后面myFunction是说,调用 myFunction 并存储它返回的任何内容。3秒后调用。

您需要做的不是调用该函数,而是存储对它的引用。所以你需要删除().

您的代码需要看起来像这样

setTimeout(myFunction,3000);

更改后,您将在单击确定后每 3 秒收到一次警报,而不是像您看到的大量警报。

于 2013-04-17T12:37:56.290 回答
1

使用setTimeout的时候需要给回调函数,而不是调用回调!XD 而不是:

setTimeout(myFunction(), 3000);

你必须写:

setTimeout(myfunction, 3000);

请记住,在末尾添加 () 将调用该函数。在您的示例中,您正在执行无限循环。

于 2013-04-17T12:39:41.047 回答