可以回调函数访问父函数变量

时间:2015-08-03 18:08:55

标签: javascript jquery

我有一个加载(回调)函数,它将回调函数作为参数。这个回调函数能否访问其父函数中存在的变量,即load()

(function load(callback) 
{                
    return $.get("../somepage.aspx", {data:data},  function (response, status, xhr){   
        var x = 10; 
        if(typeof callback === 'function') { callback(); }
    }
})(done);

var done = function(){
  //do something with x here
  alert(x);
}

2 个答案:

答案 0 :(得分:1)

您无法访问x,因为它超出了done功能的scope

您需要将x传递给回调:

(function load(callback) 
{                
    return $.get("../somepage.aspx", {data:data},  function (response, status, xhr){   
        var x = 10; 
        if(typeof callback === 'function') { callback(x); }
    }
})(done);

var done = function(x){
  //do something with x here
  alert(x);
}

怀疑这是你想要的但是我正在黑暗中看到问题中的代码如何具有严重的语法问题(即done不是一个child的父母。)

答案 1 :(得分:0)

不,它不能,因为回调的范围完全在调用范围之外。将x作为回调中的参数传递。