您的位置:首页 > Web前端 > JavaScript

JS闭包以及具体题目2

2016-05-26 16:47 323 查看
以下程序有什么问题,如何改进?

function printListItem(arr){
var i, l = arr.length - 1;
for(var i = 0; i <l ; i++){
setTimeout(function(){
console.info(arr[i]);
}, 200);
}
}


当定时器或事件执行时,for循环早就结束了,这个是i已经是最大值

解决方法是用闭包把每次循环i的值保存起来

function printListItem2(arr){
var i, l = arr.length - 1;
for(var i = 0; i <l
4000
; i++)(function(i){
setTimeout(function(){
console.info(arr[i]);
}, 200);
})(i);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: