gpt4 book ai didi

Javascript 函数不修改数组(引用?)

转载 作者:行者123 更新时间:2023-11-30 07:35:48 24 4
gpt4 key购买 nike

如果 JavaScript 传递一个函数参数作为对原始对象的引用,为什么我不能用这个简单的函数修改原始数组?

var array1 = ["one"];

function change(array) {
var array2 = ["222"];
array = array2;
}

change(array1);

console.log(array1); // this prints ["one"] instead of ["222"]

为什么有时对象似乎作为引用传递,而在这种情况下它作为副本传递?

最佳答案

Why sometimes objects seem to be passed as reference and in this case it´s passed as a copy?

它不是作为数组的副本传递的,而是作为数组引用的副本传递的。仍然只有一个数组,您可以使用该引用更改函数中的数组:

var array1 = ["one"];

function change(array) {
array[0] = "222";
}

change(array1);

console.log(array1); // this prints ["222"]

你不能做的是在函数中用不同的数组替换数组。如果你给参数赋一个新的数组,那么它会指向新的数组,但是变量array1仍然没有改变,指向原来的数组。

关于Javascript 函数不修改数组(引用?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33308339/

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