javascript - 在javascript中,将变量发送到函数表达式?

  显示原文与译文双语对照的内容
0 0

这个问题已经有了如下答案:

我先解释一下我在这里用一个简单的例子来做什么。

  1. 创建一个局部作用域变量 id,并给它一个值x 。
  2. 在 global alert(a); 中创建一个函数表达式,用 ,并将该函数存储为变量fn在全局列表中。
  3. 修改 id 表示值。
  4. 通过我的全局列表调用 ,并为我打印出x x 。

现在的问题是 fn()的值是y,而不是x,因为最初分配给 id 。 我首先找到了处理临时全局变量的解决方案,但是这只是因为项目已经变得很少了。 我不再需要跟踪这些全球空间的方法了。

任何帮助我在正确的direction 中指出的帮助。 如果这个问题以前已经回答过的话,我道歉。 也许我只是在搜索网站时不太好,但是我还是找不到一个满意的。

注意:我应该添加与变量作用域相反的次数,这不是问题。 局部变量似乎是全局( 或者创建一个指向它的全局指针) 处理的,因为在所描述的方式下,在它的他作用域中打印局部变量。

下面是我想要( 我认为这种方式比使用我自己的代码更清楚)的代码示例:


var fnList = []
function FunctionA(){
 for(var i = 0; i <10; i++){
 var iToFunctionExpression = i;//this is where I want to somehow send my variable to the function
 fnList.push(function(){
 alert(iToFunctionExpression);
 });
 }
}
function FunctionB(){
 for(var i = 10; i <20; i++){
 var iToFunctionExpression = i;//this is where I want to somehow send my variable to the function
 fnList.push(function(){
 alert(iToFunctionExpression);
 });
 }
}
function FunctionPrintAB(){
 for(var fn = 0; fn <fnList.length; fn++){
 fnList[fn]();//here I want to alert the numbers 0 through 19
 }
}

最佳注意事项。

时间: 原作者:

0 0

你需要构建一个闭包:


var x = 1;

function makealerter(i) {
 return function() {
 alert(i);
 }
}

var fn = makealerter(x);

var y = 2;

fn();

x = y;

fn();

...