我在函数中声明了var1。但是,当我尝试在inner_function2中分配一个值时,似乎另一个var1是创建而不是引用第一个。
var func1 = function(response) {
var var1;
function inner_function2(param) {
Ext.Ajax.request({
url:'',
params: param,
success:function(result, request) {
var1 = a;
}
});
}
}()
答案 0 :(得分:4)
我建议您在代码中明确指定范围。你可以这样做:
var func1 = function(response) {
var var1;
var outer_scope = this;
function inner_func2(param) {
Ext.Ajax.request({
url: '',
params: param,
scope: outer_scope,
success: function(result, request) {
var1 = a;
}
});
}
}()
希望它有效!
答案 1 :(得分:4)
success
Ext.Ajax.request
回调。这意味着,调用它的函数(func1()
和inner_function2()
都已经返回,并且它们的范围已被删除。
让我们尝试展示一系列事件
func1()
被称为var1
inner_function2()
被调用(我假设你在某处调用它)Ext.Ajax.request()
,声明success
回调inner_function2()
结束 - AJAX请求在后台运行func1()
结束时,局部变量var1
被删除(它仍然是在回调范围可用虽然) - AJAX请求是在后台运行success
回调。 var1
,创建一个全局变量和分配的值a
var1
仍然可以在回调的范围,但一旦回调结束时,变量不再可用在任何地方,所以你不能使用它。请记住,AJAX中的'A'代表'异步'。