将数组作为参数列表传递给具有现有参数的函数

时间:2013-10-24 02:22:48

标签: javascript arrays function parameters arguments

我搜索了一下并提出了.apply()和.call(),但它们似乎并不像我需要的那样。

说我有

function example(someparam, anotherparam, finalparam){
}

我能动态传递一个数组来匹配这些参数吗?这样,如果我试图将value1传递给'someparam',将value2传递给'anotherparam',将value3传递给'finalparam',我可以使用像[value1,value2,value3]这样的数组吗?

说出这些值是否为:

valueArray = [value1, value2, value3];

我认为可能会这样做

example.apply(valueArray);

这可能吗?我理解通过传递对象可以动态处理参数,但我需要这个不要求目标函数需要一个对象。

2 个答案:

答案 0 :(得分:1)

您的代码不完整......您可以使用

example.apply(this, valueArray);

答案 1 :(得分:0)

Javascript函数可以传递任意数量的参数,其余的只是未定义。

在示例功能中,您可以使用arguments.length。如果它为1,则假设您传递了一个包含三个值的数组。否则继续正常进行。您也可以只检查第一个参数的类型或检查最后两个参数的类型。类似的东西:

function example(someparam, anotherparam, finalparam){
    if(typeof someparam === "Array") {
        finalparam = someparam[2];
        anotherparam = someparam[1];
        someparam = someparam[0];
    }

    //continue as normal
}

如果您无法修改该功能,则可以使用example.apply(undefined, valueArray)