首页 > js 中定时器传参的问题

js 中定时器传参的问题

1

for(var i = 0; i < 4; i++) {
    
        setTimeout(function(i) {
            console.log(i);  
        }, (i + 1) * 1000);
}

2

 for(var j = 0; j < 4; j++) {
    (function(i) {
        setTimeout(function() {
            console.log(i);  
        }, (i + 1) * 1000);
    })(j);
}

第二个我知道是立即执行函数(只是传了个参数,不算是闭包哈),第一个访问不到是不是因为当函数执行时,其上下文执行环境是window中,从而访问不到i。
还有一个疑问,如果我想给setTimeout(fn,1000)中的fn传实参,我一般该怎么传?
setTimeout( fn(实参) ,1000)这样是不行的啊,fn会立即执行,除了类似第二个,我还想到当i是window中的变量也可以访问到,大家有什么其它的办法吗?


for(var i = 0; i < 4; i++) {
    
        setTimeout(function(i) {
            console.log(i);  
        }, (i + 1) * 1000, i);
}
【热门文章】
【热门文章】