2017-02-22 61 views
0

理論問題,如果對於例如我有一個叫做Order的大對象,它在道具上有一大堆:字符串,數字,數組,嵌套對象。在javascript中傳遞對象作爲參數的性能

我有一個函數:

function removeShipment(order) { 
    order.shipment.forEach(
     // remove shipment action 
    ); 
} 

這意味着我只能訪問一個道具(shipment),但發送一個大對象。

垃圾收集和性能的角度是有差異,通過Order和通Order.shipment

因爲對象通過參考,並且實際上不會將Order複製到變量中。

+2

對象按引用而不是按值傳遞!傳遞一個對象到一個函數和傳遞一個數字一樣快! –

+2

您可以進行的唯一優化是代碼清晰! –

回答

-1

創建一個簡單的測試這裏https://jsperf.com/passing-object-vs-passing-raw-value

測試結果:

    在Chrome傳遞對象
  • 慢〜7%,在火狐傳遞對象傳遞原始值
  • 是〜慢15%的是通過在IE11傳球對象的原始值
  • 是〜慢10%的是通過原始值

這是僅通過一個變量的syntetic測試,所以在其他情況下結果可能會有所不同