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

Допустим, у нас есть функция с именем join(), задача которой - объединить все строки, которые мы ей передаем.

Например, мы пишем прототип, который принимает 2 строки:

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!'

Читайте также

Комментарии ()

    Написать комментарий