首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setTimeout(myFunction,5000);vs setTimeout(myFunction(),5000);

setTimeout(myFunction,5000);vs setTimeout(myFunction(),5000);
EN

Stack Overflow用户
提问于 2016-07-07 22:41:16
回答 3查看 263关注 0票数 2

我只是在玩"setTimeout“函数。这段代码按照预期运行:

代码语言:javascript
复制
function myFunction() {
    console.log('test');
    setTimeout(myFunction, 1000);
}
myFunction();

它每秒都会将“test”打印到控制台。

但在运行此代码时,超时不会等待:

代码语言:javascript
复制
function myFunction() {
    console.log('test');
    setTimeout(myFunction(), 1000);
}
myFunction();

它向我的主机发送垃圾邮件“test”。

代码中唯一的区别是myFunction()调用的括号。为什么会发生这种情况?

EN

回答 3

Stack Overflow用户

发布于 2016-07-07 22:42:40

这是因为通过包含圆括号,您实际上是在执行函数并将其结果传递给setTimeout

票数 3
EN

Stack Overflow用户

发布于 2016-07-07 22:42:45

myFunction()立即调用函数,并将其返回值传递给setTimeout以供稍后调用(除非它的返回值是undefined,它不是函数(或字符串),所以这是没有意义的)。

票数 3
EN

Stack Overflow用户

发布于 2016-07-07 22:43:50

setTimeout(myFunction(), 1000);表示您的传递结果由myFunction()作为setTimeout的第一个参数返回。myFunction不返回任何内容,因此setTimeout(myFunction(), 1000);setTimeout(undefined, 1000);相同

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38248419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档