Показать сообщение отдельно
  #37 (permalink)  
Старый 19.06.2017, 13:35
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,661

Alessio18911, после выполнения цикла в i останется последнее значение, обработчик выполняется не в цикле (там он просто инициируется на элементе) и не сразу после цикла, а когда-то в будущем когда пользователь кликнет на элемент. Такой код который выполняется не синхронно по ходу, а на наступление какого-то события в будущем называется асинхронным, например, к такому коду относятся все обработчики событий addEventListener и его свойство-атрибутные аналоги (выполняется на наступление события), setTimeout и setInterval (на окончание задержки), requestAnimationFrame (на перерисовку кадра), XMLHttpRequest и fetch (на ответ сервера), Promise (обертка для удобной организации асинхронного кода), возможно еще что-то забыл. Используя всё это библиотеки и фреймворки строят свои более универсальные и удобные асинхронные методы, например, jquery имеет .on() над addEventListener, .ajax() над XMLHttpRequest и тд.
Ответить с цитированием