欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

当心下面例子的循环:闭包中的局部变量可能和你最初想的不一样。 博客分类: js闭包问题 javascript闭包问题循环 

程序员文章站 2024-03-24 18:07:28
...

如题,这是为什么?

<script>
function buildList(list) {   
  var result = [];   
  for (var i = 0; i < list.length; i++) {   
    var item = 'item' + list[i];   
    result.push( function() {document.write(item + ' ' + list[i] + '<br />')} );   
  }   
  return result;   
}   

function testList() {   
  var fnlist = buildList([1,2,3]);   
  // using j only to help prevent confusion - could use i   
  for (var j = 0; j < fnlist.length; j++) {   
    fnlist[j]();   
  }   
}     

testList();  //输出3次:'item3 undefined' 
document.write('<br />');
</script>