Неограниченное количество параметров функции
как определить неограниченное количество аргументов для функции в JavaScript
Можно ли в JavaScript создать функцию, которая принимает неограниченное количество аргументов?
Допустим, у нас есть функция join()
, объединяющая все строки, полученные в качестве аргументов. Для начала создадим прототип с двумя параметрами:
const join = (string1, string2) => {
return string1 + string2
}
При вызове такой функции мы получим строку, которая объединит две строки-аргумента:
join('Всем', ' привет') // 'Всем привет'
Простейший способ добавить необязательный параметр - это создание аргумента со значением по умолчанию (например, значением по умолчанию может быть пустая строка):
const join = (string1, string2, string3 = '') => {
return string1 + string2 + string3
}
Но такой подход практически не масштабируется, потому что потребуется ввести огромное количество параметров с предустановленными значениями, а это весьма плохая идея.
Вместо этого можно использовать оператор расширения (spread-оператор), который мы установим прямо перед именем необходимого параметра. Таким образом внутри функции вся совокупность аргументов будет представлена массивом. А это значит, что теперь для объединения строк-аргументов достаточно воспользоваться методом .join()
, передаав ему в качестве аргумента пустую строку (в противном случае для объединяемых строк будет установлен разделитель по умолчанию - запятая).
const join = (...strings) => {
return strings.join('')
}
Синтаксис стрелочной функции позволит нам еще больше упростить код:
const join = (...string) => strings.join('')
В результате мы получим:
join('Всем', ' привет') // 'Всем привет';
join('Всем', ' привет', '. Сегодня', ' хороший', 'день.') // 'Всем привет. Сегодня хороший день.'
Спасибо за внимание.