我是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
。
我该如何解决这个问题?
答案 0 :(得分:2)
完成此行后
var array2 = array1;
array2和array1都指向同一个数组。 1数组中的更改将自动更新其他数据。由于js中的数组是对象,对象始终传递或通过引用分配。
你在这里可以做的就是黑客
var array2 = array1.slice()
或
var array2 = [].concat(array1);