отличие for of от for(var...){}

Привет.
Помогите разобраться.
В задании №9 " Добавляем обработчик с помощью цикла" применили for of цикл для обработчиков событий и все сработало. Если же переписать c помощью for (var…){}, то надо применять замыкание. А что так влияет на исправность кода: декларирование let или сам цикл for of, есть ли исключения?