persona x grata
понятно, спасибо) задачка для собеса в компанию ковырять легаси код
Создаешь самовызывающуюся анонимную функцию, передаешь ей аргументом индекс, значение счетчика копируется при передаче в функцию, и не будет изменяться
Функция возвращает другую, которая замыкает аргумент анонимной функции, в итоге все работает корректно
В 2020 уже можно так не извращаться, и юзать let, у переменной, заданной через let, блочная область видимости. Тело цикла это блок, поэтому на каждой итерации цикла переменная-счетчик создается заново
А вообще лучше не юзать замыкания, если можно обойтись без них, а передавать в функции аргументы, ведь замыкание - побочный эффект