根据Array.prototype.slice()在JavaScript中的文档,slice()方法将数组的一部分浅拷贝返回到一个新数组中。据我理解,浅拷贝只会复制数组中的顶级元素,而不会复制嵌套元素。但是,当我在浏览器控制台中运行测试时,slice()方法看起来确实是在复制嵌套元素(深度复制)。

我在哪里误解了深拷贝的概念?请帮我澄清一下,因为它与我的确切例子有关。
var array = [1,2,[3,4,[5,6]]];
var array2 = array.slice();发布于 2018-01-29 15:49:22
在这种情况下,浅拷贝意味着嵌套的对象将指向原始值。因此,通过修改切片数组中的嵌套对象,您将修改原始对象。
最好在这个例子中看到:
var originalArray = [1, [2, 3], 4];
var slicedArray = originalArray.slice();
var nestedArray = slicedArray[1]; // [2, 3]
nestedArray.push("oh no, I mutated the original array!");
console.log(originalArray); // [1, [2, 3, "oh no, I mutated the original array!"], 4]发布于 2018-01-29 15:49:20
slice是一个浅拷贝,不是因为嵌套的值被忽略,而是因为它们包含对原始数组的引用,因此仍然是链接的。例如:
let arr = [1, [2]]
let shallowCopy = arr.slice(0, arr.length);
shallowCopy[1][0] = "foobar";
// will print "foobar", because the nested array is just a reference
console.log(arr[1][0]);https://stackoverflow.com/questions/48504957
复制相似问题