2015-04-28 42 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

相关问题