重复调用setTimeout比在3秒的间隔之后调用

时间:2013-04-17 12:35:48

标签: javascript

为什么要重复调用函数而不是3秒后?

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

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

3 个答案:

答案 0 :(得分:5)

您立即致电myFunction,然后将其返回值(undefined)传递给setTimeout

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

变化:

setTimeout(myFunction(),3000);

致:

setTimeout(myFunction,3000);

答案 1 :(得分:3)

看看这段代码

setTimeout(myFunction(),3000);

()之后的myFunction说,调用myFunction并存储它返回的内容。 3秒后拨打电话。

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

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

setTimeout(myFunction,3000);

更改后,您会在点击“确定”后每隔3秒收到一次提醒,而不是您所看到的大量警报。

答案 2 :(得分:1)

使用setTimeout时,需要提供回调函数,而不是调用回调函数! XD 而不是:

setTimeout(myFunction(), 3000);

你必须写:

setTimeout(myfunction, 3000);

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