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]();