【问题标题】:JavaScript: Pass unknown number of arguments from one method to another [duplicate]JavaScript:将未知数量的参数从一种方法传递给另一种方法[重复]
【发布时间】:2020-06-12 01:00:47
【问题描述】:

这是我想做的。我有两种方法,第一种可以接受任意数量的参数。这个方法是一个中介,它不知道它会接收多少个参数,但它需要将它的所有参数传递给另一个方法。显然还有更多代码,但我已将其精简到最低限度。

function acceptArguments(args) {
  secondFunction(arguments);
}

通常,使用这种方法,第二种方法接受参数作为数组

function secondFunction(param) {
  console.log(param);
}

运行这个我希望看到以下内容:

acceptArguments(1, 2, 3, 4) => 输出为 [1,2,3,4]

但是我想做的是让 secondFunction 方法单独接受参数,而不是作为数组接受参数,所以它看起来像这样:

function secondFunction(v1, v2, v3, v4) {
  console.log(v1, v2, v3, v4);
}

如果我要向方法传递 1、2、3、4 和单独的参数,我希望看到以下内容:

acceptArguments(args) => 输出为 1, 2, 3, 4

我的情况是 secondFunction 方法知道它将接收多少个参数,但是 acceptArguments 方法(它是一个中介不知道或关心它传递了多少个参数。

我试过了,以下没有结果:

function acceptArguments() {
  secondFunction(...arguments);
}

function acceptArguments() {
  secondFunction(...Object.keys(arguments));
}

function acceptArguments() {
  secondFunction.apply(Object.keys(arguments));
}

【问题讨论】:

标签: javascript arguments destructuring spread


【解决方案1】:

您可以使用rest语法将所有参数收集到acceptArguments中的数组中(这比使用arguments变量更可取),然后将这些参数传播到secondFunction的调用中:

function acceptArguments(...args) {
  secondFunction(...args);
}

function secondFunction(v1, v2, v3, v4) {
  console.log(v1, v2, v3, v4);
}

acceptArguments(1, 2, 3, 4)

【讨论】:

  • 虽然这比arguments 更受欢迎,但后者应该可以工作,并且适合我。
  • 非常感谢!我知道我已经很接近了,只是无法退出解决问题。
猜你喜欢
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2013-01-29
  • 2020-12-07
  • 1970-01-01
  • 2018-03-10
相关资源
最近更新 更多