I Shar

I Shar

мир глазами веб-разработчика

Неограниченное количество параметров функции

как определить неограниченное количество аргументов для функции в JavaScript

I Shar

время чтения 2 мин.

Photo by Marko Pekić on Unsplash

Можно ли в 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('Всем', ' привет', '. Сегодня', ' хороший', 'день.') // 'Всем привет. Сегодня хороший день.'


Спасибо за внимание.

    • frontend
    • js

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.