我只是在玩"setTimeout“函数。这段代码按照预期运行:
function myFunction() {
console.log('test');
setTimeout(myFunction, 1000);
}
myFunction();它每秒都会将“test”打印到控制台。
但在运行此代码时,超时不会等待:
function myFunction() {
console.log('test');
setTimeout(myFunction(), 1000);
}
myFunction();它向我的主机发送垃圾邮件“test”。
代码中唯一的区别是myFunction()调用的括号。为什么会发生这种情况?
发布于 2016-07-07 22:42:40
这是因为通过包含圆括号,您实际上是在执行函数并将其结果传递给setTimeout。
发布于 2016-07-07 22:42:45
myFunction()立即调用函数,并将其返回值传递给setTimeout以供稍后调用(除非它的返回值是undefined,它不是函数(或字符串),所以这是没有意义的)。
发布于 2016-07-07 22:43:50
setTimeout(myFunction(), 1000);表示您的传递结果由myFunction()作为setTimeout的第一个参数返回。myFunction不返回任何内容,因此setTimeout(myFunction(), 1000);与setTimeout(undefined, 1000);相同
https://stackoverflow.com/questions/38248419
复制相似问题