This question already has answers here:
What is the difference between a deep copy and a shallow copy?
(31个答案)
6年前关闭。
根据MDN文档,调用
看到这个MDN link for slice()。
但是,如果我在控制台中运行一个简单的测试:
并检查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