js延迟打印for循环-闭包

用setTimeout延迟打印一个for,当时不懂原理,但是面试的大叔人特别好,给我讲了好多题,面试肯定是失败的,但是学到了很多东西,以后的面试经常用到大叔给讲的东西。喏,其中之一就是这个:

for(var i=0 ; i<10; i++) {
(function(i){
//var backup = i;//定义个backup也可以暂存i值
setTimeout(function() {
console.log(i);//输出0-9
}, 1000*i);
})(i);
}
把变量i包养起来,用的时候再拿,就ok!
反例就是,输出了10个10
for(var i=0 ; i<10; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
huan

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: