乘以所有函数参数

时间:2016-03-26 14:08:27

标签: javascript

我试图创建一个将所有参数传递给它的函数。可以传递给函数的参数量可以变化。到目前为止我有这个

var multiply = function () {
    var i, sum = 0;
    for (i = 0; i < arguments.length; i++) {
        sum *= arguments[i];
    }
    return sum;
};

当我这样称呼它时 - multiply(10, 5, 5) - 当答案应为250(10 x 5 x 5)时,它返回0。我在这做错了什么?

3 个答案:

答案 0 :(得分:2)

您也可以使用Array.prototype.reduce()

来完成此操作
  

reduce()方法对累加器和数组的每个值(从左到右)应用一个函数,将其减少为单个值。

除了你明确表示你想通过使用一个用于此目的的函数来累积值之外,它并没有比for循环更有优势。

var multiply = function () { 
  return Array.prototype.reduce.call(arguments, function(a, b) { 
    return a * b;
  });
};

您需要使用Array.prototype.reduce.call构造,因为arguments在大多数环境中只是一个类似于对象的数组。

答案 1 :(得分:1)

将任何数字与0相乘是0

所以设置var sum = 1;

答案 2 :(得分:1)

从ES6开始,答案就是=&gt;

const multiply = (..args) => args.reduce((accum, val) => accum * val, 1);