См. Код ниже. Я пытался раздеть его до гола.
У меня есть массив _queue. Я хочу повторить 10 раз. На каждой итерации я хочу создать функцию, имеющую правильно заданную ссылку для j (то есть j = 0 на первой итерации, j = 1 на второй итерации и т. Д.)
Я хочу сохранить эту функцию в переменной f, а затем добавить f в массив _queue, чтобы я мог вызвать ее позже.
Проблема, конечно, в том, что на каждой итерации первого цикла вместо сохранения замыкания в f он сразу же выполняет замыкание.
У меня такой вопрос: как сохранить функцию с соответствующей переменной j, чтобы я мог добавить ее в массив _queue?
_queue = [];
for (j = 0; j < 10; j++) {
var f =
(function (index) {
alert(index);
})(j); //code is executed here instead of stored in the f variable
_queue.push(f); //Add f
}
for (k = 0; k < _queue.length; k++){
_queue[k].call();
}