gpt4 book ai didi

JavaScript - 数组通过引用传递但在重新分配时丢失

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:42:57 25 4
gpt4 key购买 nike

在下面的JS代码中,为什么f3(arr2)不像f2(arr1)那样改变arr2的值arr1?有没有办法让 f3 按预期工作(如果可能,不返回修改后的数组)?

var arr1 = [1, 2, 3, 4];
var arr2 = [1, 2, 3, 4];

function f1() {
return [2, 3, 4, 5];
}

function f2(arr) {
arr.push(5);
}

function f3(arr) {
arr = f1();
}

f2(arr1);
console.log(arr1); // [ 1, 2, 3, 4, 5 ]

f3(arr2);
console.log(arr2); // [ 1, 2, 3, 4 ], expect [2, 3, 4, 5]

最佳答案

如果要修改数组,那么实际上就得修改数组。您不能只在变量上写入对不同数组的引用(因为那样只会丢弃对该数组的本地引用)。

function f3(arr) {
arr.length = 0; // Empty the array
f1().forEach(function (currentValue) { arr.push(currentValue); });
}

关于JavaScript - 数组通过引用传递但在重新分配时丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37250538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com