Cоздание опциональных параметров в функциях JavaScript

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

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

JS
Скопировать код
function example(param = 'default') {
  console.log(param);
}

example(); // выведет "default", потому что аргумент не передан
example('specific'); // выведет "specific", поскольку передан конкретный аргумент

Если param не предоставлен, то функция использует значение 'default', что упрощает её вызов и внутреннюю логику.

Кинга Идем в IT: пошаговый план для смены профессии

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

ES6 ввел удобный способ реализации опциональных аргументов через значения по умолчанию:

JS
Скопировать код
function greet(name = 'Гость', greeting = 'Привет') {
  return `${greeting}, ${name}!`;
}

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

В ES6 значения по умолчанию применяются, когда аргумент не передан или равен undefined. В ES5 разработчики часто использовали логический оператор || для достижения аналогичного результата:

JS
Скопировать код
function greet(name, greeting) {
  name = name || 'Гость';
  greeting = greeting || 'Привет';
  return `${greeting}, ${name}!`;
}

Однако, этот подход не различает null, false, 0, '' и undefined, так как все эти значения интерпретируются как «ложные». В ES6 параметры по умолчанию применяются только при undefined.

Обработка исключений

В ES6 null не трактуется как undefined, поэтому для обеспечения надёжной работы функции рекомендуется проверять параметры на ложные значения принудительно:

JS
Скопировать код
function greet(name = 'Гость', greeting = 'Привет') {
  if (name === null) name = 'Гость';
  if (greeting === null) greeting = 'Привет';
  return `${greeting}, ${name}!`;
}

В контексте ES5 следует проверить отсутствие undefined:

JS
Скопировать код
function greet(name, greeting) {
  name = name === undefined ? 'Гость' : name;
  greeting = greeting === undefined ? 'Привет' : greeting;
  return `${greeting}, ${name}!`;
}

Подводные камни

Неправильное использование опциональных аргументов может привести к неправильному пониманию функции и неожиданным результатам. Использование слишком большого числа опциональных аргументов может сделать функцию сложной для понимания, особенно если они вызывают побочные эффекты или требуют специальной предварительной подготовки.

Использование истиности в JS

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

Проверка опциональных аргументов на начальном этапе

Рекомендуется выполнять проверку опциональных аргументов на начальных этапах выполнения функции для обеспечения её прозрачности и корректности работы.

Обработка неизвестного количества аргументов

Для функций с неизвестным заранее числом аргументов можно использовать объект arguments:

JS
Скопировать код
function logAllArguments() {
  for (var i = 0; i < arguments.length; i++) {
    console.log(arguments[i]);
  }
}

Визуализация

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

Markdown
Скопировать код
function makeSandwich(bread, cheese = 'Чеддер', sauce = 'Майонез') {
  return `🍞${bread} | 🧀${cheese} | 🍯${sauce}`;
}

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

Полезные материалы