This question already has answers here:
What is the difference between a deep copy and a shallow copy?

(31个答案)


6年前关闭。




根据MDN文档,调用array.slice()将创建该数组的浅拷贝。

看到这个MDN link for slice()

但是,如果我在控制台中运行一个简单的测试:
var test = [[1,2,3],7,8,9];
var shallow_copy = test.slice();

并检查shallow_copy,我可以看到整个二维数组似乎都被复制了。

浅拷贝和深表副本有什么区别?如果我猜到了,我会把它称为深拷贝。

最佳答案

要查看区别,请尝试:

shallow_copy[0][2] = 4;
console.dir(test);

您会看到test已被修改!这是因为虽然您可能已经将值复制到了新数组中,但是嵌套数组仍然是同一数组。

深拷贝将递归地执行浅拷贝,直到所有内容都是原始副本的新副本为止。

关于javascript - 使用JavaScript数组的浅拷贝和深表副本之间有什么区别? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24512712/

10-12 13:33