16 javascript arrays
根据MDN文档,调用array.slice()将创建数组的浅表副本.
但是,如果我在控制台中运行这样的简单测试:
var test = [[1,2,3],7,8,9];
var shallow_copy = test.slice();
Run Code Online (Sandbox Code Playgroud)
并检查shallow_copy,我可以看到整个二维数组似乎被复制过来.
浅拷贝和深拷贝有什么区别?如果我猜测,我会称这是一个深刻的副本.
Nie*_*sol 23
要查看差异,请尝试:
shallow_copy[0][2] = 4;
console.dir(test);
Run Code Online (Sandbox Code Playgroud)
你会看到它test已被修改!这是因为虽然您可能已将值复制到新数组,但嵌套数组仍然是相同的.
深拷贝将递归执行浅拷贝,直到所有内容都是原始副本.