Необязательные параметры в JS
В этой статье вы подробнее познакомитесь с необязательными параметрами функции в JavaScript.
В ES6 стало возможно задавать для параметров функции значения по умолчанию. Они используются, если вызывающая сторона не передала своего значения в качестве аргумента.
Параметры, для которых установлено значение по умолчанию, называются необязательными. Для них можно не указывать аргументы, и тогда функция будет использовать значения по умолчанию.
function sum(x = 3, y = 5) {
// return sum
return x + y;
}
console.log(sum(5, 15)); // Вывод: 20
console.log(sum(7)); // Вывод: 12
console.log(sum()); // Вывод: 8
В этом примере по умолчанию значение параметра x
— 3, а y
— 5.
- Когда переданы оба аргумента
sum(5, 15)
,x
становится равным 5,y
— 15. - Когда передан только один аргумент
sum(7)
,x
становится ранвым 7, аy
принимает значение по умолчанию — 5. - Когда не передан ни один аргумент
sum()
, иx
, иy
принимают значения по умолчанию: 3 и 5 по умолчанию.
Выражения в качестве значений по умолчанию
Значение по умолчанию необязательно должно быть числом. Оно может быть некоторым выражением: например, суммой двух параметров или функцией.
Пример 1. Параметры в качестве значений по умолчанию
function sum(x = 1, y = x, z = x + y) {
console.log( x + y + z );
}
sum(); // Вывод: 4
В этом примере:
- Значение по умолчанию
x
— 1. - Значение по умолчанию
y
равно значению параметраx
. - Значение по умолчанию
z
равно сумме значений параметровx
иy
.
Если обратиться к параметру, который еще не был инициализирован, JavaScript выдаст ошибку.
function sum( x = y, y = 1 ) {
console.log( x + y);
}
sum(); // ReferenceError: Cannot access 'y' before initialization
Пример 2. Функция в качестве значений по умолчанию
const sum = () => 15;
const calculate = function( x, y = x * sum() ) {
return x + y;
}
const result = calculate(10);
console.log(result); // Вывод: 160
В этом примере:
- В функцию
calculate()
передается 10. x
принимает переданное значение 10.- Функция
sum()
возвращает 15. - Значение
y
по умолчанию задается равным 150. - Результат — 160.
Значение undefined
Если передать значение undefined
в функцию с необязательным параметром, функция примет значение по умолчанию.
function test(x = 1) {
console.log(x);
}
// передаем значение undefined
// функция принимает значение по умолчанию
test(undefined); // Вывод: 1