我有一个问题,可能很简单,但无论如何。在异步函数中注册事件监听器时,我相信当函数运行它时,该函数中的所有值都将不存在。
但是,如下面的代码中显示的事件监听器仍然可以访问变量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);
});
}
});
答案 0 :(得分:2)
这是因为关闭。函数“关闭”其词法范围内的所有变量,也就是说,一旦定义它的函数返回,它就会保留对它们的访问权。
在您的具体示例中,values
在定义click
的功能时属于范围,因此即使success
完成,它仍然可以访问。
您可以在此处找到更多信息:
答案 1 :(得分:0)
JQuery $符号位于全局范围内。任何东西都可以参考它。您通过$。
到达表单复选框值