Главная » Rest оператор (оставшиеся параметры) и параметры по умолчанию

Rest оператор (оставшиеся параметры) и параметры по умолчанию


18.06.2021, 23:03
Rest оператор

Rest оператор объединяет отдельные элементы в один массив

В случае если нужно контролировать аргументы, приходящие в функцию, а их конечное число неизвестно, используется rest оператор, записывается последним после всех аргументов функции как "...", при этом ему даётся произвольное имя (rest, c, и т.п).

Например, есть функция, в аргументах которой укажем rest оператор:

Код

const log = function(a, b, ...rest) {
  console.log(a, b, rest);
};

Вызовем эту функцию с числом аргументов, большим чем у функции:

Код

log('basic', 'rest', 'operator', 'usage');  

Результат в консоли:

basic rest [ 'operator', 'usage' ]

Basic и rest передались в аргументы a и b, остальные rest оператор собрал в массив.

Параметры по умолчанию

Как пример, есть функция:

Код

const calc = function(a, b) {
  console.log(a * b);
};

Если передаётся два аргумента, функция отработает без проблем, например:

Код
calc(3, 5); // => 15

Но что если будет передаваться только один аргумент? Как вместо второго сделать какое-то значение по-умолчанию?

До появления стандарта ES6 это делалось так:

Код

const calc = function(a, b) {
  b = b || 2; /* оператор "или" возвращает первую правду, то есть 2 */
  console.log(a * b);
};

calc(3); // => 6

Оператор "или" возвращает первую правду, а так как b изначально не получил аргумента, то его значение будет вначале undefined (false), получаем для b таким образом значение по умолчанию равное 2.

В ES6 параметры по умолчанию записываются при объявлении функции:

Код

const calc = function(a, b = 2) {
  console.log(a * b);
};

calc(3); // => 6

КОММЕНТАРИИ (0)