怎么可能有一个接受无限数量参数的函数呢?
假设我们有一个名为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!'