在javascript中传递对象作为参数的性能

时间:2017-02-22 16:20:25

标签: javascript performance function object garbage-collection

理论问题,如果是例如我有一个名为Order的大对象,它在道具上有吨:字符串,数字,数组,嵌套对象。

我有一个功能:

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

这意味着我只访问一个道具(shipment),但发送一个大对象。

从垃圾收集和性能的角度来看,传递Order和传递Order.shipment之间存在差异吗?

因为对象通过引用传递,并且实际上并未将Order复制到变量中。

1 个答案:

答案 0 :(得分:-1)

在这里创建了一个简单的测试https://jsperf.com/passing-object-vs-passing-raw-value

测试结果:

    Chrome中的
  • 传递对象比传递原始值<~li>慢约7% Firefox中的
  • 传递对象比传递原始值<~li>慢约15%
  • 在IE11传递对象比传递原始值<~li>慢约10%

这是仅传递一个变量的同步测试,因此在其他情况下结果可能不同