我有一个问题,可能很简单,但无论如何.在异步函数中注册事件监听器时,我相信当函数运行它时,该函数中的所有值都将不存在.
但是,一个事件监听器,如下面显示的代码仍然可以访问变量值,那是怎么回事?变量是否以某种方式保存在事件监听器中?
$.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);
});
}
});
最佳答案 这是因为关闭.函数“关闭”其词法范围内的所有变量,也就是说,一旦定义它的函数返回,它就会保留对它们的访问权限.
在您的特定示例中,当定义了给予click的函数时,值在范围内,因此即使成功完成它也将保持可访问状态.
你会在这里找到更多信息: