【发布时间】:2015-04-28 18:47:52
【问题描述】:
我有一个键值对,其中包含五个键,每个键的值都是由数千个对象组成的巨大数组。我可以在将其传递给函数时对其进行子集化,也可以在函数中传递整个数组。
例如:
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 有影响吗?
函数是否需要加载参数大小?
谢谢
【问题讨论】:
-
你试过测试了吗?
-
由于数据似乎会在相关函数调用之前和之后存在,因此可能没有区别,无论哪种方式您都在传递“指针”。
-
使用jsperf 运行比较测试。
-
@dandavis 是否像将参数作为指针传递?
-
是的,就是这样。不要对语义太具体,否则我们会整天都在这里,但是当你在 js 中传递一个对象时,你本质上是向该对象传递了一个 ref。如果处理没有阻止垃圾收集,则 cpu/ram 使用应该是恒定的。
标签: javascript function arguments subset