调用带有作为变量传递的参数的匿名函数时遇到问题.如果我将一个变量作为参数传递给数组后将一个匿名函数保存到数组中,那么我更改变量并调用该函数,它会打印变量的最后一个值,而不是我推送匿名函数时的变量值进入我的阵列.我在以下示例中简化了我的代码:
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();
Run Code Online (Sandbox Code Playgroud)
好吧,invokePushed(); 警告'再见'而不是'你好'..我的目标是将几个函数存储到数组中并按顺序调用它们,但是这样我的数组中的所有函数都具有相同(最后)的参数值.
我知道我可以通过将函数的字符串rappresentation推入数组来解决这个问题:
var f = 'myFunction(\''+k+'\');';
Run Code Online (Sandbox Code Playgroud)
并在调用函数中使用eval调用它,但我希望使用第一种方法.
可能吗?
谢谢,
亚历山德罗.