如何使用参数setTimeout调用javascript函数
以下功能每5秒显示一次警报:如何使用参数setTimeout调用javascript函数,javascript,Javascript,以下功能每5秒显示一次警报: function foo() { bar="foo"; alert (bar); setTimeout(foo, 5000); } foo(); 但是,当我向函数添加参数并从setTimeout调用时,它不再等待5秒,而是无延迟地发出无休止的警报: function foo(bar) { bar="foo"; alert (bar); setTimeout(foo(bar), 5000); } foo();
function foo() {
bar="foo";
alert (bar);
setTimeout(foo, 5000);
}
foo();
但是,当我向函数添加参数并从setTimeout
调用时,它不再等待5秒,而是无延迟地发出无休止的警报:
function foo(bar) {
bar="foo";
alert (bar);
setTimeout(foo(bar), 5000);
}
foo();
为什么会出现这种情况?在传递参数时,我如何延迟循环函数?它不起作用,因为您在使用
setTimeout(foo(bar),5000)
时调用函数
您可以使用传递条
变量:
setTimeout(foo.bind(this, bar), 5000);
第一个参数是要传递给函数的
此
的值。如果您不需要它,它可以是null
。以下参数是传递的参数。在本例中,bar
是第一个参数。JavaScript认为您希望立即调用foo(bar)
,然后将其结果传递到setTimeout()
,这不是您的意思。相反,您应该创建一个匿名函数,其中包含您的调用,如下所示:
function foo(bar) {
bar = "foo";
alert(bar);
setTimeout(function() {
foo(bar)
}, 5000);
}
您可以使用参数参数(在第二个参数之后): 基本上,第二个参数之后的任何参数都会传递给第一个参数中提供的函数。可能重复的
foo(bar)
不是函数。您已经调用了一个函数,根据定义,无论return语句是否存在,该函数都会返回一些内容。
setTimeout(foo, 5000, bar);