【发布时间】:2016-02-28 20:43:40
【问题描述】:
very good Stack Overflow answer 提供了一个示例,说明在返回列表中的匿名函数时,闭包如何直观地反作用。
function buildList(list) {
var result = [];
for (var i = 0; i < list.length; i++) {
var item = 'item' + i;
result.push( function() {alert(item + ' ' + list[i])} );
}
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]();
}
}
此代码将返回:
item2 undefined
item2 undefined
item2 undefined
我的问题是 - 您将如何修改此代码以使其返回我们期望的结果?
item0 1
item1 2
item2 3
【问题讨论】:
标签: javascript closures anonymous-function