将任意数量的参数传递到Javascript函数中

时间:2017-06-07 21:24:05

标签: javascript

我希望能够将任意数量的参数传递给函数,然后能够在以后使用这些参数。我知道我可以传入默认参数,但我不知道在我的函数中声明了什么。

例如,

function test(????) {
  console.log(a)
  console.log(b)
  console.log(c)
}

test(a="a", b="b", c="c")

我也受到了这个函数的挑战,并尽可能少地对var声明进行更改。所以这里声明了变量a,b和c,我无法编辑这些变量。我应该能够传递参数,然后知道将自己分配给这些变量。

function test(???) {
  var a,b,c
  if (a>b){
    c = a + b
  }
}

test(a=2,b=3)

6 个答案:

答案 0 :(得分:4)

您实际上不需要在函数参数中定义任何参数。您需要做的就是访问j arguments内置的javascript内容。

所以你的代码可能如下所示:

function test() {
    var a = arguments[0];
    var b = arguments[1];
    var c = arguments[2];

    console.log(a);
    console.log(b);
    console.log(c);
}

test("a", "b", "c");

供参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

答案 1 :(得分:2)

使用数组是一个好主意,但为了完整性......

ES6方式!

如果您能够支持ES6功能,spread operator与arguments关键字结合使用是一种巧妙的解决方法:

function anyNumber() {
  console.log(...arguments); // ->  1 2 3 4

  let argsAsArray = [0, ...arguments, 5]; // now they're an array

  argsAsArray.forEach(s => console.log(s)); // -> 0 1 2 3 4 5
};

anyNumber(1,2,3,4);

使用扩展运算符可以做很多很酷的事情,尤其是对象和参数解构。

答案 2 :(得分:1)

你可以传入一个对象或一个数组:

function test1([a, b, c]) {
   // ...
}
test1([1, 2, 3]);

function test2({ a, b, c }) {
   // ...
}
test2({ a: 1, b: 2, c: 3 });

答案 3 :(得分:1)

function test(input) {
  console.log(input.a);
  console.log(input.b);
  console.log(input.c);
}

test({ a: 1, b: 2, c: 3 });

答案 4 :(得分:0)

您应该使用数组或对象。

在该数组中添加所需的参数。

function test(arr) {
   console.log(arr.a);
   console.log(arr.b);
   console.log(arr.c);
}

arr = {}
   
arr.a = "a";
arr.b = "b";
arr.c = "c";
    
k = test(arr);
    
    

答案 5 :(得分:0)

在更新的问题中给定javascript,您可以在函数名称后的()内定义默认参数。

function test(a = 2, b = 3) {
  let c;
  if (a > b) {
    c = a + b
  } else {
    c = 0
  }
  console.log(c);
}

test(); // 0

test(4); // 7

另见Can we set persistent default parameters which remain set until explicitly changed?