如果我在setTimeout()和setInterval()中只使用函数名而不加括号调用命名函数,则会按预期执行。但是如果我使用括号调用同一个函数,则可能立即执行该函数或出现错误。
我希望能够更深入地了解这个问题,比网上找到的内容更详细一些。请问是否可以向我解释为什么会出现这种情况?
我希望能够更深入地了解这个问题,比网上找到的内容更详细一些。请问是否可以向我解释为什么会出现这种情况?
var func = function(){
console.log("Bowties are cool.");
}
setTimeout(func(), 1500);
// Prints "Bowties are cool." immediately
setInterval(func(), 1500);
// Throws an error
setInterval(func, 1500);
// Works as expected
setTimeout(console.log("Bowties are cool."),1500);
// This method has the same result as "setTimeout(func(), 1500)".
()
运算符会导致函数被调用,因此当您在setTimeout()
的调用中使用func()
时,函数将被调用并且 结果(返回值)将传递给setTimeout()
。 - Pointy()
时,您正在调用该函数并传递该调用的结果。 - Matt Burland