【发布时间】:2023-04-05 05:06:01
【问题描述】:
根据 MDN 文档,调用 array.slice() 将创建数组的浅表副本。
看到这个MDN link for slice()。
但是,如果我在控制台中运行一个简单的测试:
var test = [[1,2,3],7,8,9];
var shallow_copy = test.slice();
检查 shallow_copy,我可以看到整个二维数组似乎被复制了。
浅拷贝和深拷贝有什么区别?如果我猜的话,我会称之为深拷贝。
【问题讨论】:
-
表示
test[0] === shallow_copy[0],它们指向同一个数组对象。 -
我发现在 JavaScript 文档中使用“浅”和“深”这个词完全令人困惑,因为已经说过对象永远不会被复制。当它明确读取“浅”时,我希望所有元素都是对同一事物的引用(包括非对象,例如数字),但它仅适用于已经声明永远不会被复制的对象。
标签: javascript arrays