如果 JavaScript 将函数参数作为原始对象的引用传递,为什么我不能使用这个简单的函数修改原始数组?
var array1 = ["one"];
function change(array) {
var array2 = ["222"];
array = array2;
}
change(array1);
console.log(array1); // this prints ["one"] instead of ["222"]
为什么有时对象似乎作为引用传递,而在这种情况下它作为副本传递?
为什么有时对象似乎作为引用传递,在这种情况下
它作为副本传递?
它不是作为数组的副本传递,而是作为数组引用的副本传递。仍然只有一个数组,您可以使用该引用更改函数中的数组:
var array1 = ["one"];
function change(array) {
array[0] = "222";
}
change(array1);
console.log(array1); // this prints ["222"]
您不能做的是在函数中用不同的数组替换该数组。如果将一个新数组分配给参数,那么它将指向新数组,但变量array1
仍然不变并指向原始数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)