【发布时间】:2016-08-16 07:10:44
【问题描述】:
我有一段代码试图提醒1,2,3。我在正确使用闭包时遇到问题,所以我无法弄清楚。
原代码:
function buildList(list) {
var result = [];
for (var i = 0; i < list.length; i++) {
var item = 'item' + list[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]();
}
}
testList();
我正在尝试对buildList() 执行类似操作以使其正常工作:
function buildList(list) {
var result = [];
for (var i = 0; i < list.length; i++) {
var item = 'item' + list[i];
result[i] = function(x) {
result.push( function() {alert(item + ' ' + list[x])} );
}(i);
}
return result;
}
我知道我在使用闭包时犯了错误,我只是不确定问题出在哪里。
【问题讨论】:
标签: javascript closures