Javascript 带参数的调用函数和带其他参数返回值的调用函数有什么不同

Javascript 带参数的调用函数和带其他参数返回值的调用函数有什么不同,javascript,function,Javascript,Function,如果我有这样的函数 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); 通过这种方式调用函数有什么不同 function cloneObj( obj ) {

如果我有这样的函数

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);
通过这种方式调用函数有什么不同

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);
或通过这种方式调用此函数

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);

没有任何区别,除了在第二个示例中创建一个
y
变量并在其中保留对克隆对象的引用,而在第一个示例中则没有(代码完成后,克隆对象不再具有对它的任何strong1引用,并且可以进行垃圾收集)



1当您记录对象时,控制台会保留对该对象的引用,但我假设它是一个弱引用,不会阻止GC(这是一个假设,不是我所知道的事实)。

没有任何区别,除了在第二个示例中创建一个
y
变量并在其中保留对克隆对象的引用,在第一种情况下,您不需要这样做(一旦代码完成,克隆对象就不再有任何strong1引用,并且可以进行垃圾收集)



1当您记录对象时,控制台会保留对该对象的引用,但我认为这是一个弱引用,不会阻止GC(这是一个假设,不是我所知道的事实)。

什么。。。。。没有区别。第一次引用,第二次不用麻烦…旁注:这是一种低效且不准确的克隆对象的方法。记住,@Rohit即使在没有这种情况的语言中,也不会改变这个问题的答案…当然,我只想让OP看看:)什么。。。。。没有区别。第一次引用,第二次不用麻烦……旁注:这是一种低效且不准确的克隆对象的方法。记住,.@Rohit即使在没有这种情况的语言中,也不会改变这个问题的答案……当然,我只想让OP看看:)