接受javaScript中所有参数的常用函数

时间:2016-12-06 13:43:13

标签: javascript jquery design-patterns

我经常在javascript中遇到这种模式问题。我有一个add函数

function add(a, b){ return a + b; }

然后我可以add(1,2) //3

但如果我想传递任何长度的参数怎么办?

我无法自由add(1,2,3,4)。或add(something,something,something)。如果我想要我必须编写另一个接受4和3参数的add函数。

我知道我可以循环使用它们但是如何将任意数量的参数传递给js中的函数?

2 个答案:

答案 0 :(得分:1)

你可以使用arguments属性。

function add(){
  var sum=0;
  for (var key in arguments)
    sum=sum+arguments[key];
 return sum;
}
console.log(add(1,2,3,7));

答案 1 :(得分:1)

您可以循环参数并添加值

ES6



function add(){
  return Array.from(arguments).reduce((p,c)=>p+= !isNaN(c)? +c : 0, 0)
}

console.log(add(1,2,3,4,5))
console.log(add(1,2,3,'a', 7))




ES5



function add(){
  return [].slice.call(arguments).reduce(function(p,c){
    p+= !isNaN(c)? +c : 0;
    return p;
  }, 0)
}

console.log(add(1,2,3,4,5))
console.log(add(1,2,3,'a', 7))