Default parameters в JavaScript

Default parameters - это параметры функции со значением по умолчанию.

Они нужны на случай, если при вызове функции аргумент не передали.

function greetUser(name = 'Гость') {
  console.log('Привет, ' + name + '!');
}

greetUser('Анна');
greetUser();

Результат:

Привет, Анна!
Привет, Гость!

Во втором вызове аргумент не передали, поэтому JavaScript взял значение по умолчанию.

Что такое default parameters

Обычный параметр получает значение из аргумента, который передали при вызове функции.

function showName(name) {
  console.log(name);
}

showName('Игорь');

Если аргумент не передать, в параметре будет undefined.

function showName(name) {
  console.log(name);
}

showName();

Результат:

undefined

Параметр по умолчанию позволяет заранее указать запасное значение.

function showName(name = 'Без имени') {
  console.log(name);
}

showName();

Результат:

Без имени

Синтаксис

Значение по умолчанию записывается прямо в списке параметров через знак =.

function functionName(parameter = defaultValue) {
  // код функции
}

Пример:

function getPrice(price, discount = 0) {
  return price - price * discount;
}

console.log(getPrice(1000, 0.1));
console.log(getPrice(1000));

Результат:

900
1000

Если скидку передали, функция использует ее. Если не передали - берет 0.

Если аргумент не передали

Значение по умолчанию срабатывает, когда аргумент отсутствует.

function createUser(name, role = 'user') {
  return name + ': ' + role;
}

console.log(createUser('Анна', 'admin'));
console.log(createUser('Игорь'));

Результат:

Анна: admin
Игорь: user

Во втором вызове второй аргумент не передали, поэтому параметр role получил значение ‘user’.

undefined и null

Параметр по умолчанию также срабатывает, если явно передать undefined.

function showStatus(status = 'active') {
  console.log(status);
}

showStatus(undefined);

Результат:

active

Но если передать null, значение по умолчанию не подставится.

function showStatus(status = 'active') {
  console.log(status);
}

showStatus(null);

Результат:

null

null - это уже переданное значение. JavaScript не заменяет его значением по умолчанию.

Несколько параметров по умолчанию

У функции может быть несколько параметров со значениями по умолчанию.

function createCard(title = 'Без заголовка', text = 'Описание отсутствует') {
  return title + ' - ' + text;
}

console.log(createCard('JavaScript', 'Урок про функции'));
console.log(createCard());

Результат:

JavaScript - Урок про функции
Без заголовка - Описание отсутствует

Так функция продолжает работать даже без аргументов.

Выражения в параметрах

Значением по умолчанию может быть не только строка или число, но и выражение.

function getTotal(price, count = 1) {
  return price * count;
}

console.log(getTotal(500, 3));
console.log(getTotal(500));

Результат:

1500
500

Параметр по умолчанию может зависеть от предыдущего параметра.

function createMessage(name, text = 'Привет, ' + name + '!') {
  return text;
}

console.log(createMessage('Анна'));

Результат:

Привет, Анна!

Значение для text строится на основе параметра name, который объявлен раньше.

Итого

1. Default parameters задают значение параметра по умолчанию.

2. Они срабатывают, если аргумент не передали или передали undefined.

3. Если передать null, значение по умолчанию не используется.

4. Значение по умолчанию записывается через = прямо в параметрах функции.

5. Параметры по умолчанию помогают писать функции, которые спокойно работают без части аргументов.