2017-02-22 117 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测试,所以在其他情况下结果可能会有所不同

相关问题