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

use*_*400 0 javascript

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

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

<script>
    function myFunction()
    {
        alert("hello");
        setTimeout(myFunction(),3000);
        // setTimeout(function(){ alert("Hello") }, 3000);
     }
</script>
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 5

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

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

更改:

setTimeout(myFunction(),3000);
Run Code Online (Sandbox Code Playgroud)

至:

setTimeout(myFunction,3000);
Run Code Online (Sandbox Code Playgroud)