我有一段代碼,我試圖讓警報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;
}
我知道我與工作決策失誤關閉,我只是不確定問題是什麼。