У меня проблема с вызовом анонимной функции с параметрами, передаваемыми как переменные.Если я сохраню анонимную функцию в массив после передачи ей переменной в качестве параметра, то я изменяю переменную и вызываю функцию, она печатает последнее значение переменной, а не значение переменной в тот момент, когда я нажал анонимную функциюв мой массив.Я упрощаю мой код в следующем примере:
var arr = [];
function myFunction(index) {
alert(index);
}
function doPush() {
var k = 'hello';
var f = function(){myFunction(k);};
arr.push(f);
k = 'goodbye';
}
function invoker(op) {
op();
}
function invokePushed() {
invoker(arr[0]);
}
doPush();
invokePushed();
Ну, invokePressed ();предупреждение «до свидания» вместо «привет». Моя цель - сохранить в массиве несколько функций и вызвать их последовательно, но таким образом все функции в моем массиве имеют одинаковое (последнее) значение параметров.
Я знаю, что могу решить эту проблему, поместив строку представления функции в массив:
var f = 'myFunction(\''+k+'\');';
и вызвав ее с помощью eval в функции invoker, но я надеюсь использовать первый метод.
Возможно ли это?
Спасибо,
Алессандро.