2016-08-03 154 views
0

如果我有功能類似這樣什麼是參數和調用函數調用函數之間的不同與其他參數的返回值

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

什麼.....沒有區別。第一個你參考,第二個你不打擾.... –

+2

備註:這是一個低效率和不準確的克隆對象的方法。 –

+0

請記住,[函數是JavaScript中的第一類對象](http://timmknight.github.io/2015/first-class-functions-javascript/)。 – Rohit416

回答

3

完全沒有什麼區別,除了第二個例子中,你創建了一個y變量並保留對其中的克隆對象的引用,並且在第一個中你沒有(一旦代碼完成,克隆的對象不再有任何強大的引用它,並且可以被垃圾收集)。


控制檯保持到當您登錄它的對象的引用,但我認爲這是一個弱引用並不妨礙GC(和它一種假設,並不是我知道事實)。