在操作新实例后,变量会丢失原始值

时间:2014-12-21 21:19:38

标签: javascript node.js

我是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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

完成此行后

  var array2 = array1;

array2和array1都指向同一个数组。 1数组中的更改将自动更新其他数据。由于js中的数组是对象,对象始终传递或通过引用分配。

你在这里可以做的就是黑客

var array2 = array1.slice()

var array2 = [].concat(array1);
相关问题