我是 Node.js 的新手,并且在操作副本后我的变量丢失其原始值时遇到了问题。
例如:
var array1 = [1, 2, 3];
var array2 = array1;
array2[0] = null;
如果我然后检查这些值,array2
是正确的,但array1
与array2
具有相同的设置,即使我没有碰过array1
。
我也看到它在这里发生。
function func(inputArray) {
var outputArray = inputArray;
outputArray[0] = null;
return outputArray;
}
var array3 = [4,5,6,7];
var array4 = func(array3);
在这里,array3
被覆盖为array4
是什么。
我该如何解决这个问题?
完成此行之后
var array2 = array1;
array2 和 array1 都指向同一个数组。1 个数组中的更改将自动更新其他数组。由于 js 中的数组是一个对象,并且对象总是通过引用传递或赋值。
你可以在这里做的是作为一个黑客
var array2 = array1.slice()
或
var array2 = [].concat(array1);