Javascript中引用行为传递的原因是什么?

时间:2018-03-23 08:40:21

标签: javascript jquery foreach pass-by-reference

在Javascript中我有下一个功能' myFunction'。

  

注意:我创建以下代码只是为了解释我的问题。

var arrayReference = [1, 2];

function myFunction() {
    var array = getArray();

    array.forEach(function (elem) {
        remove(elem.attr('id'));
    });
}

function getArray() {
    return arrayReference;
}

function remove(elem) {
     $.each(arrayReference, function (index, el) {
          if (el == element) {
               arrayReference.splice(index, 1);
          }
     });
}

我认为var array只是按值传递,不受arrayReference更改的影响。但它似乎通过引用传递。当使用fetched数组调用forEach方法时,它只为数组的第一个元素执行remove方法。

所以要明确:remove功能只在我的情况下执行一次。这可以通过引用传递吗?我不知道是什么原因造成的。

很高兴知道:当我注释掉这个remove函数时,foreach会被执行两次。

0 个答案:

没有答案