Aves: но ведь for в очереди событий вообще нет, а вот в основном цикле он есть и стоит перед отложенной функцией. т.е. если говорить о цикле событий то там нет очереди.
Dark Hole: А, всё понял. Мы создаём 9 функций в которых потом срабатывают таймеры и берут i из замыканий. alert выдаёт в хаотичном порядке, а console.log в правильном. А в моём коде console.log выводил ещё пустой массив до того как туда что то было записано отложенными функциями. И всё равно мне не удаётся обогнать цикл, он срабатывает быстрее 4 миллисекунд. Интересно успеть подхватить i во время работы цикла или это невозможно?
Dark Hole: Теперь и я запутался. А почему функция в setTimeout не подхватывала i из цикла без обёртки? И почему значения i выводятся в хаотичном порядке: 0, 8, 7, 6, 5...?
EarthFM: А как получить разные i? Т.е. for крутится, а setTimeout создаёт асинхронные функции которые подлавливают текущее значение i и запоминают их. Так не работает: