Answer

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

Report Page