原始类型(Number,String等)按值传递,但是对象是未知的,因为它们可以是值传递(如果我们认为持有对象的变量实际上是对象的引用)并且通过引用传递(当我们认为对象的变量保存对象本身时).
虽然最后并不重要,但我想知道提交传递约定的参数的正确方法是什么.是否有JavaScript规范的摘录,它定义了与此相关的语义?
根据MDN文档,调用array.slice()将创建数组的浅表副本.
但是,如果我在控制台中运行这样的简单测试:
var test = [[1,2,3],7,8,9];
var shallow_copy = test.slice();
Run Code Online (Sandbox Code Playgroud)
并检查shallow_copy,我可以看到整个二维数组似乎被复制过来.
浅拷贝和深拷贝有什么区别?如果我猜测,我会称这是一个深刻的副本.