如何创建函数并传入可变长度参数列表?

nop*_*ole 2 javascript lambda function variadic-functions

我们可以p在以下代码中创建一个函数:

var p = function() { };
if (typeof(console) != 'undefined' && console.log) {
    p = function() { console.log(arguments); };
}
Run Code Online (Sandbox Code Playgroud)

但是参数像数组一样传递给console.log,而不是一个接一个地传递

console.log(arguments[0], arguments[1], arguments[2], ... 
Run Code Online (Sandbox Code Playgroud)

有没有办法扩展参数并传递给console.log像上面的方式?

请注意,如果原始代码是

var p = function() { };
if (typeof(console) != 'undefined' && console.log) {
    p = console.log;
}
Run Code Online (Sandbox Code Playgroud)

然后它适用于Firefox和IE 8,但不适用于Chrome.

Joh*_*ica 8

您可以使用Function.apply():

console.log.apply(console, arguments);
Run Code Online (Sandbox Code Playgroud)