1PeGaS
@1PeGaS

Почему функция не сохраняет предыдущие значения?

var m = [];
for (var j = 0; j < 10; j++) {
  m[j] = function() {
    return j;
  }
}

alert( m[2]() );


почему массив хранит значения последней итерации цикла?
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
@abberati
frontend-разработчик
Почему задачи из учебников появляются на сервисах решения проблем?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Для сохранения промежуточных значений можно сделать замыкание:
var m = [];
for (var j = 0; j < 10; j++) {
  m[j] = (function() {
    return this;
  }).bind(j);
}

alert( m[2]() );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы