在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会被执行两次。