Ресурсы: 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
Добавлять комментарии могут только зарегистрированные пользователи.