Javascript setTimeout立即执行

Javascript setTimeout立即执行,javascript,Javascript,Javascript立即执行这段代码,但是,我需要它在执行之前等待2毫秒,如setTimeout(doIt(I),2000)中所述 为什么? 变量颜色=[“红色”、“粉色”、“绿色”]; 函数doIt(i){ 我++ 控制台日志(i); console.log(“didIt”); $('body').append(“body{background:+i+”;}”); 如果(i==2){ } 否则{ 试验(i); } } 功能测试(一){ setTimeout(doIt(i),2000); }

Javascript立即执行这段代码,但是,我需要它在执行之前等待2毫秒,如
setTimeout(doIt(I),2000)中所述

为什么?


变量颜色=[“红色”、“粉色”、“绿色”];
函数doIt(i){
我++
控制台日志(i);
console.log(“didIt”);
$('body').append(“body{background:+i+”;}”);
如果(i==2){
}
否则{
试验(i);
}
}
功能测试(一){
setTimeout(doIt(i),2000);
}
试验(0);

这是最常见的错误。将代码更改为:

function test(i){
    setTimeout(function() {
        doIt(i);
    }, 2000);
}
您直接调用了
doIt
方法,而不是通过在
doIt
之后写入
(i)
将引用传递给
setTimeout
回调

使用
bind()
方法直接编写的另一种方法:

function test(i) {
    setTimeout(doIt.bind(null, i), 2000);
}
这里都给出了:


  • setTimeout
    第一个参数是对函数表达式和函数调用之间函数差异的引用:括号。一个是函数,另一个是函数返回的值。教程如下:
    function test(i) {
        setTimeout(doIt.bind(null, i), 2000);
    }