当心下面例子的循环:闭包中的局部变量可能和你最初想的不一样。 博客分类: 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>