我有一个具有ajax调用的函数。在回调时,它使用参数来查找类。如果我多次调用此函数,它是否会影响以前函数的回调参数?与覆盖参数一样。
实施例
function foo(ARG){
$.ajax({
method: "POST",
url: "www.example.com",
data: myData,
dataType: "JSON",
success: function(data){
ARG.append(data);
},
error: function(xhr, ajaxOptions, thrownError){
}
});
}
var class1 = $('.class1');
foo(class1);
var class2 = $('.class2');
foo(class2);
var class3 = $('.class3');
foo(class3);
编辑:通常,在进行任何回调之前,将调用所有3个函数。回调是否会使用最新版本的参数?或者它被称为时存在的论点?
答案 0 :(得分:3)
引用JS书籍Speaking JavaScript作者:Axel Rauschmayer
功能与其出生范围保持联系
locations = FirebaseDatabase.getInstance().getReference("Location");
Query user_location = locations.orderByChild("email").equalTo(email);
createInc()返回的函数不会失去与startValue的连接 - 该变量为函数提供了跨函数调用的状态。这本书甚至以非常精细的方式解释了整个工作。
答案 1 :(得分:2)
如果那是您的恐惧,ARG
将不会被覆盖。以下是证据。
var myData = 'q=roses';
function foo(ARG) {
$.ajax({
method: "GET",
url: "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js",
data: myData,
dataType: "JSON",
complete: function(data) {
console.log(ARG.selector);
ARG.append(ARG.selector);
},
error: function(xhr, ajaxOptions, thrownError) {}
});
}
var class1 = $('.class1');
foo(class1);
var class2 = $('.class2');
foo(class2);
var class3 = $('.class3');
foo(class3);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="class1">1</p>
<p class="class2">2</p>
<p class="class3">3</p>
&#13;