当前位置:  开发笔记 > 编程语言 > 正文

如何使用setTimeout调用带有参数的javascript函数

如何解决《如何使用setTimeout调用带有参数的javascript函数》经验,为你挑选了3个好方法。

以下功能每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();

为什么这样,我怎样才能在传递参数时延迟遍历函数?



1> TwoStraws..:

JavaScript认为你想foo(bar)立即调用然后将其结果传递给setTimeout(),这不是你的意思.相反,您应该在其中创建一个匿名函数,如下所示:

function foo(bar) {
    bar = "foo";
    alert(bar);

    setTimeout(function() {
        foo(bar)
    }, 5000);
}



2> Josh Crozier..:

它不起作用,因为您在使用时调用该函数setTimeout(foo(bar), 5000).

您可以使用该.bind()方法传递bar变量:

setTimeout(foo.bind(this, bar), 5000);

第一个参数是this要传递给函数的值.它可以是null,如果你不需要它.以下参数是传递的参数.在这种情况下,bar是第一个参数.



3> MinusFour..:

您可以使用参数参数(在第二个参数之后):

setTimeout(foo, 5000, bar);

基本上,第二个参数之后的任何参数都传递给第一个参数中提供的函数.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有