Answer
t.me/js_testОтвет:
10 10
Обьяснение:
Почему все эти функции показывают одно и то же?
Всё потому, что внутри функций shooter нет локальной переменной i. Когда вызывается такая функция, она берёт i из своего внешнего лексического окружения.
На момент выполнения army[0]() и army[5]() переменная i имеет значение 10.
Код для проверки:
function makeArmy() {
let shooters = [];
let i = 0;
while (i < 10) {
let shooter = function() {
console.log( i );
};
shooters.push(shooter);
i++;
}
return shooters;
}
let army = makeArmy();
army[0]();
army[5]();