我四处搜寻,并没有真正找到有关此事的问题。
所以我有一个函数可以采用多个参数,(参数的数量并不重要)这样的事情:
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),但调用方法并没有这样做。
感谢
答案 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
是您的数组。