gpt4 book ai didi

JavaScript 变量作用域

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:28:21 25 4
gpt4 key购买 nike

我已经在函数内部声明了 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;
}
});
}

}()

最佳答案

success Ext.Ajax.request 回调在返回 AJAX 请求后调用。这意味着,调用它的函数(func1()inner_function2() 已经返回,并且它们的作用域已被删除。

让我们尝试展示一系列事件

  1. func1() 被调用
  2. 声明了局部变量var1
  3. inner_function2() 被调用(我假设你确实在某处调用了它)
  4. Ext.Ajax.request() 被调用,并声明了 success 回调
  5. inner_function2() 结束 - AJAX 请求在后台运行
  6. func1() 结束,局部变量 var1 被删除(它仍然在回调范围内可用)- AJAX 请求在后台运行
  7. AJAX 请求完成 - 成功 回调被调用。 由于没有局部变量 var1,因此创建了一个全局变量并为其赋值 a(请参阅下面的注释,了解为什么将其删除)。局部变量 var1 在回调的范围内仍然可用,但一旦回调结束,该变量在任何地方都不再可用,因此您无法使用它。

请记住,AJAX 中的“A”代表“异步”。

关于JavaScript 变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4506655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com