如何在JavaScript函数中接受无限的参数

102 阅读1分钟

怎么可能有一个接受无限数量参数的函数呢?

假设我们有一个名为join() 的函数,其工作是将我们传递给它的所有字符串连接起来。

例如,我们写一个接受两个字符串的原型。

const join = (string1, string2) => {
  return string1 + string2
}

当我们调用它时,我们得到一个字符串,它是我们传递的两个参数的连接。

join('hi', ' flavio') // 'hi flavio'

一个简单的方法是附加额外的参数,默认为一个空字符串,像这样。

const join = (string1, string2, string3 = '') => {
  return string1 + string2 + string3
}

但是这种方法不能很好地扩展,因为我们需要添加大量的参数,而且我们的代码看起来会很糟糕。

相反,我们可以使用这种语法,在扩散操作符(...)后面加上我们要使用的参数的名称。在函数内部,参数是一个数组,所以我们可以简单地调用它的.join() 方法来连接它所包含的字符串,传递一个空字符串作为参数(否则它默认连接字符串时在它们之间添加一个逗号)。

const join = (...strings) => {
  return strings.join('')
}

在我们的例子中,我们也可以使用箭头函数中可用的隐式返回语法来简化。

const join = (...strings) => strings.join('')

我们可以用之前的方法来调用它。

join('hi', ' flavio') // 'hi flavio'
join('hi', ' flavio', ' it', ' is', ' a', ' beautiful day!') // ''hi flavio it is a beautiful day!'