【发布时间】:2012-08-06 23:59:22
【问题描述】:
考虑以下示例:
<script type="text/javascript">
function alertBox(){
alert('Hello World!');
}
function doSomething(){
setInterval(alertBox(), 5000); //This is for generic purposes only
};
function myFunction(){
setTimeout(doSomething(),3000);
};
myFunction();
</script>
是什么导致它立即执行,而不是等待设置的3秒,以及只执行警报ONCE,而不是按计划的 5 秒间隔?
感谢您提供的任何帮助!
梅森
【问题讨论】:
-
好吧,立即调用回调(并且结果被传递给
setTimeout).. 改为传递函数对象。 -
这可能是关于 SO 的最常见的 JavaScript 问题。
-
@jfriend00 我认为循环中的封闭变量可能会将其捆绑起来.. ;-)
-
好吧,我确实觉得自己像个傻瓜——这就是我让 JS 呆了这么久的结果>.
-
@MasonWinsauer 感受你的痛苦。
标签: javascript callback settimeout setinterval