Задать вопрос
@nikolay_akhmetyanov
Front-end developer

Замыкания в чем конкретно разница?

Необходимо каждому элементу коллекции добавить обработчик.

Этот код работает
var addThumbnailClickHandler = function (thumbnail, photo) {
  thumbnail.addEventListener('click', function () {
    fullPhoto.src = photo;
  });
};

for (var i = 0; i < thumbnails.length; i++) {
  addThumbnailClickHandler(thumbnails[i], photos[i]);
}

Этот код нет!
for (var i = 0; i < thumbnails.length; i++) {
  thumbnails[i].addEventListener('click', function () {
    fullPhoto.src = photos[i];
  });
}

Хоть убей не понимаю почему! Объясните мне пожалуйста простыми словами. Я понимаю, что здесь замыкание и тд. Я не понимаю почему второй вариант не работает, ведь есть переменная var которая увеличивается на 1, но fullPhoto.src всегда равно 5
  • Вопрос задан
  • 1000 просмотров
Подписаться 6 Простой 2 комментария
Ответ пользователя Афанасий Захаров К ответам на вопрос (4)
@afanasiyz
Javascript-разработчик
поменяйте var на let - это быстрое решение.

https://learn.javascript.ru/closures-usage

а вот тут, в задачках - решение вашей проблемы
Ответ написан