Нет, оно конечно сработает. Но только один раз, ибо при следующем вызове i будет равно длине массива из предыдущего вызова, а не нулю. Т.к. функция импортируется единожды, единожды импортируется и "верхняя" i, которую функция свободно изменяет.
Решений данной задачи множество, и самый простой вариант - передавать i дополнительным параметром.
По поводу это самой i. Важнейшая для понимания javascript как такового информация.