将变量发送到 javascript 中的函数表达式

Sending a variable to a function expression in javascript?

本文关键字:函数 表达式 javascript 变量      更新时间:2023-09-26

我将首先用一个简单的例子来解释我在这里试图做的事情。

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

现在的问题是 fn(( 打印的值是 y 而不是最初分配给 idx。我首先通过处理临时全局变量找到了解决方案,但随着项目的发展,它根本不起作用了。我不再有跟踪这些全球温度所需的手段。

任何帮助为我指出正确方向的帮助将不胜感激。如果这个问题以前已经回答过,我很抱歉。也许我只是不太擅长搜索网络,但我还没有找到一个令人满意的。

注意:我也许应该补充一点,与我提到变量范围的次数相反,这不是问题。局部变量似乎以某种方式被全局处理(或者可能创建了一个指向它的全局指针?(,因为以上述方式从其他范围打印局部变量没有问题。

这是我想要的代码示例(我决定这样比使用我自己的代码更清晰(:

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
    }
}

此致敬意。

你需要构建一个闭包:

var x = 1;
function makealerter(i) {
    return function() {
        alert(i);
    }
}
var fn = makealerter(x);
var y = 2;
fn();
x = y;
fn();