Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中作为参数传递对象的性能_Javascript_Performance_Function_Object_Garbage Collection - Fatal编程技术网

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

javascript中作为参数传递对象的性能,javascript,performance,function,object,garbage-collection,Javascript,Performance,Function,Object,Garbage Collection,理论上的问题,例如,我有一个叫Order的大对象,它有很多道具:字符串、数字、数组、嵌套对象 我有一个功能: function removeShipment(order) { order.shipment.forEach( // remove shipment action ); } 这意味着我只访问一个道具装运,但发送一个大对象 从垃圾收集和性能的角度来看,passorder和passorder.shipping之间有区别吗 因为对象是通过引用传递的,实际上并

理论上的问题,例如,我有一个叫Order的大对象,它有很多道具:字符串、数字、数组、嵌套对象

我有一个功能:

function removeShipment(order) {
    order.shipment.forEach(
        // remove shipment action
    );
}
这意味着我只访问一个道具装运,但发送一个大对象

从垃圾收集和性能的角度来看,passorder和passorder.shipping之间有区别吗


因为对象是通过引用传递的,实际上并没有将顺序复制到变量中。

在这里创建了一个简单的测试

测试结果:

在Chrome中,传递对象比传递原始值慢约7% 在Firefox中,传递对象比传递原始值慢约15% 在IE11中,传递对象比传递原始值慢约10%
这是只传递一个变量的句法测试,因此在其他情况下,结果可能会不同

在这里创建了一个简单的测试

测试结果:

在Chrome中,传递对象比传递原始值慢约7% 在Firefox中,传递对象比传递原始值慢约15% 在IE11中,传递对象比传递原始值慢约10%
这是只传递一个变量的语法测试,因此在其他情况下,结果可能不同

对象通过引用而不是值传递!将对象传递给函数就像传递数字一样快!你唯一能做的优化就是代码清晰!对象是通过引用而不是通过值传递的!将对象传递给函数就像传递数字一样快!你唯一能做的优化就是代码清晰!这个测试已经不存在了。我创建了一个,尝试:,我得到了一个可以忽略不计的~1%的差异。这个测试已经不存在了。我创造了一个,尝试:,我得到了一个微不足道的~1%的差异。