如果我有这样的功能
function cloneObj( obj ) {
return JSON.parse( JSON.stringify( obj ) );
}
function test( obj ) {
console.log(obj);
}
var x = {1:2};
通过这种方式调用函数之间有什么不同
test(cloneObj(x));
或通过这种方式调用此功能
var y = cloneObj(x);
test(y);
答案 0 :(得分:3)
没有任何区别,除了在第二个示例中,您创建了一个y
变量并在其中保留了对克隆对象的引用,并且在第一个示例中您没有(一旦您的代码完成) ,克隆的对象不再具有任何强大的 1 引用,并且可以进行垃圾收集。
1 当您记录对象时,控制台会保留对该对象的引用,但我认为它是一个不会阻止GC的弱引用(并且它是< / em>一个假设,而不是我所知道的事实。)