a = [];
for (var i = 0; i < 3; i++) {
a.push(function() {
console.log(i);
})
}
a[0]() // I want 0, but I get 3
Я пытаюсь написать простую часть кода, где у меня есть массив функций, так что когда я выполняю функцию в определенном индексе, значение индекса должно быть напечатано.Значение перезаписывается из-за доступа по ссылке
Однако в приведенном выше фрагменте показан тот же результат (3 в этом случае) для всех значений индекса. Я понимаю, что значение указывает по ссылке и поэтому указывает на последнее значение i. Может ли кто-нибудь указать, как это сделать правильно?
Это дубликат [JavaScript закрытия внутри петли - простой практический пример] (http://stackoverflow.com/questions/750486/javascript- закрытие-внутри-петли-простой-практический пример) и [Javascript пресловутая проблема с циклом?] (http://stackoverflow.com/questions/1451009/javascript-infamous-loop-issue). Пожалуйста, обратитесь к этому вопросу для подробных объяснений. –
Большое спасибо @ Mr.Polywhirl –