闭包打印数字
var + setTimeout
for(var i = 0; i < 5; i++ ){
setTimeout(console.log(i), i * 1000);
}
// 输出结果:0 1 2 3 4
// but:setTimeout未起作用
var + setTimeout
for(var i = 0; i < 5; i++ ){
setTimeout(() =>{
console.log(i);
}, i * 1000);
}
// 输出结果:5 5 5 5 5
var + setTimeout + 闭包
for(var i = 0; i < 5; i++ ){
(function(i){
setTimeout(function(){
console.log(i)
}, i * 1000)
})(i)
}
// 输出结果:0 1 2 3 4
let + setTimeout
for(let i = 0; i< 5; i++ ){
setTimeout(() =>{
console.log(i);
}, i * 1000);
}
// 输出结果:0 1 2 3 4