我正在解决以下类型:编写一个程序,将“sum”、“product”、“mean”或“sqrt”中的一个作为第一个参数,并使用一系列数字作为进一步的参数。该程序将适当的函数应用于该系列。
我已经解决了它(下面的代码),但它体积庞大且效率低下。我想重写它,使其具有单一功能计算器调用其他函数(即函数sum, 功能product).
我的问题:如何编写函数 sum、product、sqrt 等,以便在函数计算器调用时,它们正确地获取计算器的参数并计算数学。
下面是庞大的代码:
function calculator() {
var sumTotal = 0;
var productTotal = 1;
var meanTotal = 0;
var sqrt;
if(arguments[0] === "sum") {
for(i = 1; i < arguments.length; i++) {
sumTotal += arguments[i];
}
return sumTotal;
}
if(arguments[0] === "product") {
for(i = 1; i < arguments.length; i++) {
productTotal *= arguments[i];
}
return productTotal;
}
if(arguments[0] === "mean") {
for(i = 1; i < arguments.length; i++) {
meanTotal += arguments[i];
}
return meanTotal / (arguments.length-1);
}
if(arguments[0] === "sqrt") {
sqrt = Math.sqrt(arguments[1]);
}
return sqrt;
}
calculator("sqrt", 17);
您只需创建一个具有所需函数的对象,然后让计算器函数调用正确的函数即可。
var operations = {
sum: function() { /* sum function */ },
product: function() { /* product function */ },
mean: function() { /* mean function */ },
sqrt: function() { /* sqrt function */ }
};
function calculator(operation) {
operation = operations[operation];
var args = Array.prototype.slice.call(arguments, 1);
return operation.apply(this, args);
}
您可以在 jsFiddle 上看到一个示例 http://jsfiddle.net/TZxBV/.
如果您不太明白我在代码中所做的事情,我建议您阅读call and apply在 JavaScript 中 http://odetocode.com/blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx还有关于JavaScript 中的对象 http://eloquentjavascript.net/chapter4.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)