0
В этом 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
Благодарность кучи. Похоже, ссылка, которую вы опубликовали, объясняет это хорошо. :) – dwjohnston
@dwjohnston, рад, что это помогло – AmmarCSE