如何在 JavaScript 中创建具有可变参数的函数?

23

我想在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);

有人知道如何定义这个函数吗?


4
@TJHeuvel 我不同意,这不是同一个问题... 这里谈论的是参数数量,另一个则是默认参数。 - Jean-Charles
1
可能是JavaScript 可变数量参数函数的重复问题。 - Alexis King
可能是重复的问题,参考 Is it possible to send a variable number of arguments to a JavaScript function? - Anderson Green
6个回答

34

您可以通过它们的序数位置访问参数,而无需在原型中声明它们,如下所示:

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]);

我也在书中看到了这个解决方案:“JavaScript权威指南”。谢谢。 - McSas

15

最新更新

剩余参数 在所有新的浏览器中都得到支持。 点击此处查看详情

剩余参数语法使我们可以将无限数量的参数表示为一个数组,您可以将它传递给其他函数。

function myFunction(...data){
  console.log(...data);
  myOtherFunction(...data);
}

myFunction(1,2,3);     //logs 1,2,3

myFunction([1,2,3]);   //logs [1,2,3]

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);

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");


1
作为附加功能:您可以为未命名的函数参数分配值,例如 (德语维基百科)
arguments[0] = 5;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接