2015-04-28 69 views
0

我有一個鍵值對包含五個鍵值爲每個千對象的巨大數組。我可以將它傳遞給一個函數,也可以在函數中傳遞整個數組。javascript函數中的參數大小是否會影響其性能?

對於e.g:

keyVal ={"first_array": Object[1000], 
"second_array": Object[1000], 
"third_array": Object[1000], 
"fourth_array": Object[1000] 
} 
var first_arr = keyVal.first_array 

兩種可能性:

function notSubsettedArgs(keyVal){ 
$.each(keyVal.first_array,function(i,item){ 
//some processing}); 
} 

function subsettedArgs(first_array){ 
$.each(first_array,function(i,item){ 
//do some processing}); 
} 

它使在JavaScript區別?
函數是否需要參數大小的負載?
謝謝

+3

你嘗試過測試它嗎? – DLeh

+0

,因爲它看起來數據將在有問題的函數調用之前和之後存在,它可能沒有區別,您傳遞任何方式的「指針」。 – dandavis

+0

使用[jsperf](http://jsperf.com/)運行比較測試。 – Sidd

回答

6

JavaScript通過將引用的副本傳遞給數組/對象來將數組和對象傳遞給函數,因此傳遞整個事物很可能是正確的。只要知道如果你在函數中改變它,那些改變就會影響你的原始數組/對象!

如果這是瀏覽器代碼而不是服務器(例如Node.js)代碼,則可以使用jsperf.com進行測試。小心一點。 It's easy to do JS benchmarks wrong!

+0

*「JavaScript通過引用將數組和對象傳遞給函數」*更準確地說,JavaScript通過* value *傳遞所有內容,但該值是對對象的引用。這與*通過引用*的實際含義不同。 –

+1

謝謝。我試圖讓語言更加精確:「通過將引用的副本傳遞給數組/對象,JavaScript將數組和對象傳遞給函數」 – Trott

相關問題