如果一个函数返回多个计算并且在几个单独的实例中重用那个函数很方便,那么最好将计算结果存储在一个内部数组中,然后从数组中拉出一个需要的计算。那个特别的电话还是有更有效的方式?
var calcFunction = function() {
var ar = [];
var calcA = ...
ar.push(calcA);
var calcB = ...
ar.push(calcA);
return ar;
}
答案 0 :(得分:2)
如果你的功能真的很长,那么每次使用数组会更有效率,但是随着功能的缩短,这个距离越来越短。但是,这不是使用该阵列的唯一原因。使用相同的值多次调用该函数实质上是代码重复,这是标准的代码气味。
总的来说,如果你可以尽可能少地调用一个方法,那么你就完成了你的工作。
答案 1 :(得分:1)
根据我的偏好,以下是我头顶的选项。表现,如果真正重新开始,你应该进行基准测试。偏好取决于您的代码及其目的。
// If independent and appropriate, split it into two separate functions
// modularization into smaller reusable building blocks is good
var calcAFunction = function() {
var calcA = ...
return calcA;
}
var calcBFunction = function() {
var calcB = ...
return calcB;
}
// Returning an array
var calcFunction = function() {
var ar = [];
var calcA = ...
ar.push(calcA);
var calcB = ...
ar.push(calcA);
return ar;
}
// Returning an object, disadvantage you must maintain key names as opposed to index
var calcFunction = function() {
var o = {};
var calcA = ...
o.key1 = calcA;
var calcB = ...
o["key2"] = calcB;
return o;
}
// Calling it with a callback function
var calcFunction = function(cb) {
var o = {};
var calcA = ...
var calcB = ...
cb(calcA, calcB)
}
calcFunction(function(A, B) {})
更新
// Returning an object, disadvantage you must maintain key names as opposed to index
var calcFunction = function() {
var o = {};
var calcA = ...
o.key1 = calcA;
var calcB = ...
o["key2"] = calcB;
return o;
}
var retObj = calcFunction();
//you can access retObj.key1 and retObj.key2