setTimeout解析问题JavaScript

setTimeout解析问题JavaScript,javascript,settimeout,Javascript,Settimeout,我在分析JavaScript设置超时时遇到问题 setTimeout(run_function("doFirstTest", + i, "Cycle test"), delay); delay和i都是在本地实例化的变量,我只能 我想我需要知道如何逃避run_函数的标志处理 来解决我的问题 非常感谢您的帮助。您在这里所做的是将run\u函数的返回值(“doFirstTest”,“i”,“Cycle test”)传递到setTimeout 您需要做的是传递函数引用 setTimeout(funct

我在分析JavaScript设置超时时遇到问题

setTimeout(run_function("doFirstTest", + i, "Cycle test"), delay);
delay和i都是在本地实例化的变量,我只能 我想我需要知道如何逃避run_函数的标志处理 来解决我的问题


非常感谢您的帮助。

您在这里所做的是将
run\u函数的返回值(“doFirstTest”,“i”,“Cycle test”)
传递到
setTimeout

您需要做的是传递函数引用

setTimeout(function () { run_function("doFirstTest", + i, "Cycle test") }, delay);
更新:此外,如下面的评论所述,如果在超时执行之前循环中
i
增加,您将发现自己存在范围问题

如果是这种情况,您可以创建一个闭包,以确保
i
保留设置超时时设置的相同值

(function (currentCount) {
    setTimeout(function () {
        run_function("doFirstTest", +currentCount, "Cycle test");
    }, delay);
})(i);
setTimeout()需要一个函数,您可以尝试以下方法:

setTimeout(function () { run_function("doFirstTest", + i, "Cycle test") }, delay);

您的代码实际上调用run_函数,并将其返回作为句柄,返回要延迟的函数。您可能希望运行函数本身被延迟:

setTimeout(function() { run_function("doFirstTest", i, "Cycle test"); }, delay);

而且,如果
i
是一个循环变量,可能还有另一个问题,因为
i
是在
for
循环完成后使用的。@jfriend00你说得对,我刚刚添加了这个案例的处理请发布
run\u function
。它是返回字符串还是其他函数?