我希望有人向我解释一下:
function myFunction(array){
array = $.grep(array, function(n,i){return n > 1 });
}
var mainArray = [1,2,3];
myFunction(mainArray);
document.write(mainArray) // 1,2,3, but i'm expecting 2,3
但是如果我做类似的事情
array[3] = 4;
代替$.grep
行,我得到1,2,3,4
。 mainArray
不应该成为 $.grep
创建的新数组吗?
最佳答案
不,array
参数也是一个本地(引用)变量。该函数将一个新数组分配给该变量,但这不会影响调用者的变量。所有参数(包括引用)均按值传递。
如果您修改(变异)array
的内容,情况将会有所不同:
function myFunction(array){
var grepResult = $.grep(array, function(n,i){return n > 1 });
array.length = 0;
Array.prototype.push.apply(array, grepResult);
}
关于javascript - 使用 byref 传递的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695798/