以下程序有什么问题,如何改进?
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 ; i++)(function(i){ setTimeout(function(){ console.info(arr[i]); }, 200); })(i); }