setTimeout(myFunction, 5000); vs setTimeout(myFunction(), 50
setTimeout(myFunction, 5000); vs setTimeout(myFunction(), 5000);
我正在玩"setTimeout"函数。此代码按预期运行:
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);
相同
myfunction()
将其返回值传递给"SetTimeOut"并执行: setTimeout( RetunValue , 1000)
然后错误...
myfunction
执行附加到它的过程
在控制台上打印"测试"
相关文章:
- setInteval vs setTimeout
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- setTimeout可以与闭包内的函数一起使用吗
- Javascript setTimeout for an array
- 刷新后,setTimeout将工作或不工作
- 继续使用javascript中的setTimeout
- setTimeout函数能否在其前面的代码执行之前激发
- jQuery setTimeOut: in for-loop
- SetTimeout and clearTimeout in Javascript
- 在setTimeout中调用相同的函数
- setTimeout不能太长
- Javascript-SetTimeout导致浏览器冻结
- setTimeout and V8
- 将jQuery对象传递到setTimeout递归函数中
- 是定义的操作系统睡眠/挂起期间setTimeout的行为
- 添加一个setTimeout方法会使jQuery悬停方法忽略setTimeout方法中的函数
- JS:setTimeout函数的UI计数
- 使setInterval和setTimeout工作时出现问题
- 为什么setTimeout适用于无休止的递归调用
- settimeout调用的函数未结束