И то, где описана переменная, в цикле или во вне, тоже может иметь значение.
Сравните
const ar = [];
let i;
for (i=0; i<5; i++) ar.push(() => i);
alert (ar.map (f => f()));
и
const ar = [];
for (let i=0; i<5; i++) ar.push(() => i);
alert (ar.map (f => f()));