gpt4 book ai didi

javascript - 事件监听器和 AJAX 异步函数变量作用域

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

我有一个问题,可能很简单,但无论如何。在异步函数中注册事件监听器时,我相信当函数正常运行时,该函数中的所有值都不存在。

但是,如下代码所示,事件监听器仍然可以访问变量 values,这是怎么回事?变量是否以某种方式保存在事件监听器中?

$.ajax({
type: "GET",
cache: false,
url: "/whatever",
success: function(data) {
var values = ["Some Values", "Inside this Object"];

$("#id :checkbox").click(function() {
var allValues = [];

$('#id3 :checked').each(function() {
allValues.push($(this).val());
});

$("#id2").val(allValues);

callMe.init(values,allValues);
});
}
});

最佳答案

这是因为闭包。函数“关闭”其词法范围内的所有变量,也就是说,一旦定义它的函数返回,它就保留对它们的访问权。

在您的特定示例中,values 在定义给 click 的函数时在范围内,因此即使在 success 之后仍可访问完成。

您会在这里找到更多信息:

关于javascript - 事件监听器和 AJAX 异步函数变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304840/

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