JavaScript:是否可以将变量传递给分配给变量的回调函数?

Tar*_*rik 19 javascript ajax

很多人都说在评论中这个问题太多了,这让我对这个问题犹豫不决,但我仍然没有找到答案,主要是因为(1)他们通常使用jQuery和(2)问题通常包含我不理解的技术问题.

我有一个带变量的函数.变量被赋予一个函数.我确信这个概念并不是AJAX专有的,但这就是我使用它的上下文,如果它有所作为.

function iClick(this)
{
    var foo = "I would like to pass this.";

    ajax.onreadystatechange = function (foo) { alert(foo); }
}
Run Code Online (Sandbox Code Playgroud)

我想将一个变量传递给函数.但是,由于没有原始函数声明,如何指定参数?我甚至可以这样做吗?

Nic*_*ver 26

只是不要将该变量声明为匿名函数中的参数,如下所示:

function iClick(this)
{
    var foo = "I would like to pass this.";
    ajax.onreadystatechange = function () { alert(foo); }
}
Run Code Online (Sandbox Code Playgroud)

当你调用第一个参数时,foo它就是函数内部回调传递的任何调用foo.如果要引用先前声明的变量,请确保不要使用具有相同名称的参数.

  • @Tarik - JS具有功能范围和闭包.即使在返回父函数之后,函数也可以访问父作用域中的变量. (3认同)
  • 哦! 我认为这将超出它的范围.谢谢! (2认同)
  • @Ali - 不,因为``console.log(foo)`会在`ajax.onreadystatechange = ...`之后立即触发,但`onreadystatechange`本身只会在未来某个时间点被触发.... .......所以,它们都是一样的`foo`,但你必须考虑时机. (2认同)

Joh*_*ock 16

您可以创建这样的函数

var c="hello";

(function(b){
   alert(b) 
})(c);
Run Code Online (Sandbox Code Playgroud)

结果将是"你好"