Почему получаем 10 раз 10?

var funcs = [];
    
for(var i = 0; i < 10; i++) {
   funcs.push(function() { return i; });
} 

for(var j = 0; j < funcs.length; j++) console.log(funcs[j]());

Почему анонимная функция внутри push всегда возвращает 10?


Ответы (1 шт):

Автор решения: smellyshovel

Потому что функция берет значение для i из замыкания в момент вызова. А вызывается она тогда, когда i уже равно 10.

→ Ссылка