如何實現一個接受無限參數的函式呢?
假設我們有一個名為 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!'