javascript函数如何工作?特别是论点

时间:2017-10-23 08:47:46

标签: javascript jquery

我有一个具有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个函数。回调是否会使用最新版本的参数?或者它被称为时存在的论点?

2 个答案:

答案 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;
&#13;
&#13;