Замыкание в цикле (var vs let)

Easy
ClosuresAsyncWildberries

Реализуйте captureLoopValues(n) — функцию, которая возвращает массив [0, 1, ..., n-1] через массив колбэков.

Типичная ловушка — использовать var. Все колбэки замкнутся на одну общую переменную i, которая к моменту вызова уже равна n:

for (var i = 0; i < n; i++) {
  callbacks.push(() => i);
}
callbacks.map(fn => fn()); // [3, 3, 3] при n=3 — не то, что ожидается
Подсказка

Проверяют понимание замыканий и разницы между var (function scope) и let (block scope). Ждут объяснения почему var "сломан" и как минимум одно исправление.

Примеры

1captureLoopValues(3)
→ [0,1,2]
2captureLoopValues(5)
→ [0,1,2,3,4]
3captureLoopValues(0)
→ []
Ваш код - JavaScript
Результаты
Нажмите «Запуск» для выполнения кода