Matrixes 发表于 2013-1-29 08:40:02

当心下面例子的循环:闭包中的局部变量可能和你最初想的不一样。

如题,这是为什么?
<script>function buildList(list) {   var result = [];   for (var i = 0; i < list.length; i++) {       var item = 'item' + list;       result.push( function() {document.write(item + ' ' + list + '<br />')} );   }   return result;   }   function testList() {   var fnlist = buildList();   // using j only to help prevent confusion - could use i   for (var j = 0; j < fnlist.length; j++) {       fnlist();   }   }   testList();//输出3次:'item3 undefined' document.write('<br />');</script> 
页: [1]
查看完整版本: 当心下面例子的循环:闭包中的局部变量可能和你最初想的不一样。