内层定时器函数引用外层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);
}