我有一个加载(回调)函数,它将回调函数作为参数。这个回调函数能否访问其父函数中存在的变量,即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);
}
答案 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作为回调中的参数传递。