![](/img/trans.png)
[英]MyFunction() vs window.setTimeout('MyFunction()', 0)?
[英]setTimeout(myFunction, 5000); vs setTimeout(myFunction(), 5000);
我正在玩“setTimeout”function。此代码按预期运行:
function myFunction() {
console.log('test');
setTimeout(myFunction, 1000);
}
myFunction();
它每秒将“测试”打印到控制台。
但是当运行这段代码时,超时并没有等待:
function myFunction() {
console.log('test');
setTimeout(myFunction(), 1000);
}
myFunction();
它用“测试”向我的控制台发送垃圾邮件。
代码中的唯一区别是 myFunction() 调用的括号。 为什么会这样?
这是因为通过包括括号,您实际上正在执行该函数并将其结果传递给setTimeout
。
myFunction()
立即调用该函数并将其返回值传递给setTimeout
以便稍后调用(除了它的返回值是undefined
,它不是函数(或字符串),因此没有意义)。
setTimeout(myFunction(), 1000);
表示myFunction()返回的传递结果作为setTimeout的第一个参数。 myFunction什么都不返回,所以setTimeout(myFunction(), 1000);
与setTimeout(undefined, 1000);
相同setTimeout(undefined, 1000);
myfunction() 将它的返回值传递给“SetTimeOut”并执行:setTimeout(RetunValue, 1000) 然后出错...
myfunction 执行附加到它的过程
在控制台上打印“测试”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.