将所有参数转发给另一个函数

Dón*_*nal -1 javascript ecmascript-6

在ES6中,可以用来将...arguments一个函数的所有参数传递给另一个,例如

function foo(a, b) {
  return bar(...arguments);
}

function bar(a, b) {
  return a + b;
}

foo(1, 2); // returns 3
Run Code Online (Sandbox Code Playgroud)

我本人“发现”了这个习语,并且想知道它是否有缺点,或者是否被认为是不好的做法?

T.J*_*der 5

我想知道它是否有缺点

除了需要注意的两点以外,不是真的:

  • arguments 在松散模式下会有一些较小的性能问题(在正常情况下无需担心)。
  • 箭头函数没有自己的arguments,因此在箭头函数中将不起作用。您可能会得到ReferencError(如果箭头功能在顶层)或arguments最近的包含function功能(或方法)(因为箭头 arguments [and thissuper]上闭合),这可能不是您想要的。

您使用的是传播符号,因此您也可以考虑使用其余符号:

function foo(...args) {
  return bar(...args);
}

function bar(a, b) {
  return a + b;
}

console.log(foo(1, 2)); // returns 3
Run Code Online (Sandbox Code Playgroud)

,在方面没有(次要)性能问题arguments,可以在箭头函数中使用,并且清楚了解您的意思。