闭包解决var的索引缓存问题

内层定时器函数引用外层IIFE传的值形成闭包

for (var i = 0; i < 5; i++) {
     
    (function(j) {
       // j = i
        setTimeout(function() {
     
            console.log(new Date, j);
        }, 1000);
    })(i);
}

console.log(new Date, i);

setTimout作外层函数,setTimeout的第一个回调函数作内层函数,内层引用外层的参数形成闭包。

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

你可能感兴趣的:(JavaScript)