hellojs.ru
Главная - JavaScript в работе - Rest оператор и параметры по умолчанию (ES6)

Rest оператор и параметры по умолчанию (ES6)

Размещено в категории "JavaScript в работе"
24.11.2024 / просмотров: 4 / комментариев: 0
Ресурсы:

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



rest оператор объединяет отдельные элементы в один массив, его название дословно расшифровывается как "оставшиеся" элементы.

Разбираем на примере:

Код

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

Допустим, наша функция принимает аргументы a и b, а также другие аргументы, причем мы не знаем, сколько еще аргументов может быть.

В таком случае, самым последним аргументом мы записываем rest оператор, обозначается он как ... и любое произвольное название

Код

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

Этот оператор соберёт все оставшиеся аргументы кроме a и b, и сформирует из них массив.

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

Код

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

В консоли получаем значения двух первых аргументов и массив из остальных:

Цитата

basic rest [ 'operator', 'usage' ]

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

Иногда мы хотим, чтобы в наших функциях параметры, в которые мы что-то передаём, изначально имели какие-то значения.

Разбираем пример, рассмотрим функцию, которая будет либо вычислять значение, либо его умножать:

Код

function calcOrDouble(number, basis) {
  console.log(number * basis);
}

Что будет, если мы вызовем эту функцию с одним аргументом?

Конечно, мы получим ошибку, и для таких случаев требуется корректировка в виде параметров по умолчанию для функции, которые при отсутствии какого-то аргумента будут подставляться автоматически.

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

Код

function calcOrDouble(number, basis) {
  basis = basis || 2;  
  console.log(number * basis);
}

calcOrDouble(3); // 6

Полуалось, что если в basis ничего не передано, то в логическом контексте это было бы false, а цифра 2 true, поэтому в итоге basis становился равным 2.

В стандарте ES6 все стало гораздо проще:

Код

function calcOrDouble(number, basis = 2) {
  console.log(number * basis);
}

calcOrDouble(3); // 6
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
Сайт управляется системой uCoz