在javascript

时间:2016-02-28 18:31:33

标签: javascript arrays

我四处搜寻,并没有真正找到有关此事的问题。

所以我有一个函数可以采用多个参数,(参数的数量并不重要)这样的事情:

function print(){
    for(var i = 0; i<arguments.length; i++ ){
        console.log(arguments[i]);
    }
}

我拥有数组中的所有参数,例如:

var params = [param1,param2,...];

我需要使用存储在params数组中的那些参数调用该函数。好吧,如果我知道params的数量,我可以这样做:

print(params[0],params[1],...);

但我不知道参数的数量,需要一种方法来调用所有这些函数。

反正我能做到吗?我尝试使用print.call(params),但调用方法并没有这样做。

感谢

1 个答案:

答案 0 :(得分:1)

在ES5及更早版本中,您正在寻找所有真正的JavaScript函数所具有的Function#apply

console.log.apply(console, params);

...其中params是你的数组。

Function#apply使用给定的this值(第一个参数)调用您调用它的函数,并在您给出的数组中调用尽可能多的参数。

请注意,并不能保证所有主机提供的函数(如console.log)都是真正的JavaScript函数。但是,在现代浏览器中,console.log确实有apply。例如,YMMV,IE9及更早版本。

在ES2015(ES6)及更高版本中,您使用spread operator

// ES2015 and later only
console.log(...params);

...再次params是您的数组。