javascript - 使用 byref 传递的数组

标签 javascript jquery byref grep

我希望有人向我解释一下:

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,4mainArray 不应该成为 $.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/

相关文章:

f# - F# 4.5 中的 byref 返回

f# - 为什么不能将带有 byref 的函数直接转换为委托(delegate)?

javascript - typescript 。检查未知类型的变量中是否存在方法/属性

javascript - 将 li 包裹成另一个 li

php - 将 PHP URL 变量传递给 jquery/ajax 表单

javascript - 在 javascript 中对字符串进行多次替换

javascript - 像 blockUI 一样淡化除 div 之外的所有内容

javascript - OpenAI Api 的输出延迟且随机

javascript - 10 $digest() 迭代在 IE 中达到错误。不知道为什么