【问题标题】:Retrieve function parameter from parent function从父函数中检索函数参数
【发布时间】:2012-01-17 06:21:47
【问题描述】:

我的脚本中有一个函数调用,其中包含对 fadeOut 调用的回调函数调用。我正在尝试将 paren't 函数参数传递给回调函数,但我似乎无法让它工作。

一般的脚本结构是:

function aFunction(aVar){
    anElement.fadeOut(200, function(){
        someFunctionCall(aVar);
    });
}

调用正确执行,但变量未传递。这可能是变量的范围问题,但我不太了解这里的概念。

【问题讨论】:

  • 应该可以。你在aFunction、fadeOuts 的回调和someFunctionCall 中都尝试过console.log(aVar) 吗?
  • 我同意这一点。你的代码是正确的。
  • ok 将尝试记录我的代码以查看发生了什么。我会告诉你的。
  • @user751564 - eicto 制作了这个小提琴,展示了您的代码的正确性,并作为对我的回答的评论发布。这里是jsfiddle.net/fXRbh

标签: javascript jquery object scope


【解决方案1】:

您可以将其存储在局部变量中:

function aFunction(aVar){
    var new_var = aVar;
    anElement.fadeOut(200, function(){
             someFunctionCall(new_var);
     });
}

【讨论】:

    【解决方案2】:

    这段代码

    function aFunction(aVar){
        anElement.fadeOut(200, function(){
            someFunctionCall(aVar);
        });
    }
    

    是正确的。您的内部函数以及您声明的任何其他函数自动可以访问包含范围内的所有变量。你传递给fadeOut 的函数将在aVar 上形成一个闭包,并且即使在aFunction 早已返回之后仍然可以继续访问它。

    【讨论】:

    • 只是为了确认,jsfiddle.net/fXRbh 它的工作原理与 @user751564 搜索其他问题一样
    • paste.debian.net/1002532formDisplayGrid 函数中不应该有匿名函数的 data 参数而不将其作为参数传递吗?请评论。 callService 是一个 ajax 调用函数,它在其 success 回调中获取匿名函数。
    猜你喜欢
    • 2013-06-27
    • 2017-04-01
    • 2017-07-23
    • 2011-08-08
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多