Пока этот вопрос старый и на него дан ответ, у меня есть еще одно довольно интересное решение:
var funcs = [];
for (var i = 0; i < 3; i++) {
funcs[i] = function() {
console.log("My value: " + i);
};
}
for (var i = 0; i < 3; i++) {
funcs[i]();
}
Изменения настолько малы, что почти трудно понять, что я сделал. Я переключил второй итератор с j на i. Это как-то освежает состояние я вовремя, чтобы дать вам желаемый результат. Я сделал это случайно, но это имеет смысл, учитывая предыдущие ответы.
Я написал это, чтобы указать на это небольшое, но очень важное отличие. Надеюсь, это поможет прояснить ситуацию для других учеников, таких как я.
Примечание: я не разделяю это, потому что я думаю, что это правильный ответ. Это ошибочное решение, которое, вероятно, сломается при определенных обстоятельствах. На самом деле, я очень удивлен, что это действительно работает.