0
function constfuncs() {
  let funcs = [];
  for(var i = 0; i < 10; i++) {
    funcs[i] = () => i;
  }

  return funcs;
}

let funcs = constfuncs();
console.log(funcs[5]()); // => 10;

Нужно подробно понять механику этого процесса.

  • Если совсем кратко: просто замените var i на let i – andreymal Jan 01 '22 at 13:13
  • @andreymal дубликатом этот пример я никак не могу назвать, но некая схожесть однозначно есть. Согласен, что можно изменить var на let, но мне хочется разобраться именно с таким вариантом. – Phazerous Jan 01 '22 at 13:28
  • 2
  • @andeymal Спасибо, ваши ссылки связанны с моим вопросом, я понимал почему должно выводиться 10, но недопонимал, почему массив тогда состоит из 10 элементов, а не только из десятого. – Phazerous Jan 01 '22 at 13:41
  • «почему массив тогда состоит из 10 элементов» — если кратко, потому что массив заполняется ещё в процессе работы цикла, когда var i ещё не успел дойти до своего окончательного значения 10. Здесь уже не имеет значения, var или let используется – andreymal Jan 01 '22 at 13:45

0 Answers0