for (var i = 0; i < thumbnails.length; i++) {
thumbnails[i].addEventListener('click', function () { // Корень проблемы здесь.
// Ты обьявляешь (не вызываешь!) в цикле анонимную функцию. При создании эта функция получает
// ссылку на внешнее лексическое окружение, которым, в данном случае, является тело цикла for.
// Когда функция вызывается, в своем лексическом окружении i она не находит, и продолжает поиск
// во внешнем. К моменту вызова, цикл завершен, и i в его лексическом окружении равна thumbnails.length
fullPhoto.src = photos[i];
});
}