为什么要重复调用函数而不是3秒后?
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
alert("hello");
setTimeout(myFunction(),3000);
// setTimeout(function(){ alert("Hello") }, 3000);
}
</script>
答案 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);
请记住,在末尾添加()将调用该函数。在您的示例中,您正在进行无限循环。