我想在javascript中使用可变数量的参数创建一个函数。下一个例子是我想如何调用这个函数:
myFunction(1,2);
myFunction(1,2,3);
myFunction(1,2,3,4);
myFunction(1,2,3,4,5);
myFunction(1,2,3,4,5,6);
任何人都知道如何定义此功能?
答案 0 :(得分:28)
您可以按顺序访问参数,而无需在原型中说明它们,如下所示:
function myFunction() {
for (var i = 0; i < arguments.length; i++)
alert(arguments[i]);
}
myFunction(1, 2, "three");
>>1
>>2
>>three
或者,如果您确实传递了一组与语义相关的数字,则可以使用数组;
function myFunction(arr) { ... }
result = myFunction([1,2,3]);
答案 1 :(得分:9)
休息参数。 Check here for details
rest参数语法允许我们将无限数量的参数表示为数组,您也可以将其传递给其他函数。
function myFunction(...data){
console.log(...data);
myOtherFunction(...data);
}
myFunction(1,2,3); //logs 1,2,3
myFunction([1,2,3]); //logs [1,2,3]
答案 2 :(得分:3)
使用'arguments'变量,如下所示:
function myFunction() {
alert(arguments.length + ' arguments');
for( var i = 0; i < arguments.length; i++ ) {
alert(arguments[i]);
}
}
按照之前的方式调用方法
myFunction(1,2);
myFunction(1,2,3,4,5,6);
答案 3 :(得分:2)
只需引用arguments数组。
https://developer.mozilla.org/en/JavaScript/Reference/functions_and_function_scope/arguments
答案 4 :(得分:2)
如果参数不存在,请使用默认值。像这样......
function accident() {
//Mandatory Arguments
var driver = arguments[0];
var condition = arguments[1]
//Optional Arguments
var blame_on = (arguments[2]) ? arguments[2] : "Irresponsible tree" ;
}
accident("Me","Drunk");
答案 5 :(得分:1)
作为附加组件:您可以为未命名的函数参数指定值,如(german wiki)
arguments[0] = 5;