我有大量的变量。计算总和的最正确方法是什么。下面是静态方式。.如果数字会增加到N倍怎么办?
function abc(a,b,c,d){
alert(a+b+c+d);
}
abc(2,3,4,5);
我有大量的变量。计算总和的最正确方法是什么。下面是静态方式。.如果数字会增加到N倍怎么办?
function abc(a,b,c,d){
alert(a+b+c+d);
}
abc(2,3,4,5);
function abc(){
return Array.prototype.reduce.call(arguments, function(a,b) {
return a + b;
}, 0);
}
.reduce
我们可以通过绑定为 的this
值来减少冗长.call
。
var reduce = Function.call.bind([].reduce);
那么它只是:
function abc(){
return reduce(arguments, function(a,b) {
return a + b;
}, 0);
}
你可以使用arguments
function abc(){
var total = 0;
for( var i = 0; i < arguments.length; i++) {
total += arguments[i];
}
alert(total);
}
abc(1, 2, 3, 4, 5, 6, 7);
或者
function abc( args ){
var total = 0;
for( var i = 0; i < args.length; i++) {
total += args[i];
}
alert(total);
}
abc([1, 2, 3, 4, 5, 6, 7]);
最好的方法是使用后者。
要自动接受无限数量的参数,请使用arguments
属性。
function sum() { // javascript functions can accept more arguments than specified
var total = 0;
for (var i = 0; i < arguments.length; i++) {
total += arguments[i];
}
return total;
}
请记住,这实际上可能不会比在原始代码中调用“a + b + c + d”更短或更易读。
这是使用该Array.reduce()
命令的较短版本。
function abc() {
alert([].reduce.call(arguments, function(a, b) { return a + b; }));
}
abc(2,3,4,5);