Javascript:转发带有可变数量参数的函数调用

Ale*_*yne 10 javascript arguments

我想我需要像ruby's splat这样的东西*.

function foo() {
  var result = '';
  for (var i = 0; i < arguments.length; i++) {
    result += arguments[i];
  }
  return result;
}

function bar() {
  return foo(arguments) // this line doesn't work as I expect
}

bar(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

我希望这回来"123",但我得到了"[object Arguments]".我认为这是有道理的.它传递的是表示参数的对象,而不是单独的参数.

那么我如何简单地将任意数量的参数转发给另一个带有任意数量参数的函数呢?

CMS*_*CMS 21

要将参数正确传递给另一个函数,您需要使用arguments:

function bar() {
  return foo(...arguments);
}
Run Code Online (Sandbox Code Playgroud)

apply方法有两个参数,第一个是apply,它的值将被用作thisObj调用函数内部的值,如果使用this或者null,undefined函数内部的值将引用全局对象.

this期望的第二个参数是一个类似数组的对象,它包含要应用于函数的参数.

这里查看上面的例子.