我使用以下内容暂停javascript几秒钟:
setTimeout(start_countdown(),3000);
它不起作用,无论秒数如何都会调用该函数。但是,以下函数可以正常工作,它不使用函数。
setTimeout(alert('hi'),3000);
我该如何解决这个问题?
答案 0 :(得分:11)
您需要传递函数参考。您正在传递函数的返回值。
区别在于:一个是您想要发生的功能的蓝图,另一个是您立即执行该功能并将其返回值传递给setTimeout
。
setTimeout(start_countdown, 3000);
如果你想做一些比简单地调用命名函数更复杂的事情,或者你想将一个参数传递给命名函数,你需要将一个匿名函数传递给超时并在其中调用你的函数:
setTimeout(function() {
start_countdown(/* possible params */);
/* other code here as required */
}, 3000);
答案 1 :(得分:3)
如果你不需要传递参数,请不要使用()
setTimeout(start_countdown,3000);
如果你必须包装你的功能
setTimeout(function(){start_countdown(parameter)},3000);
答案 2 :(得分:1)
改为写
setTimeout(start_countdown, 3000);
没有parens ()
第二个例子也可以写成
setTimeout(function() { alert('hi'); }, 3000);
答案 3 :(得分:0)
在不同的浏览器中,它以不同的方式工作。在IE中,您需要使用匿名函数将参数传递给回调:
的setTimeout(函数(){警报( '喜')},3000);