Как работают параметры по умолчанию?

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

До появления параметров по умолчанию, чтобы обойти отсутствие передачи аргументов или передачу значения undefined, разработчики использовали различные приемы, включая проверки на undefined и установку соответствующих значений внутри функции. Однако это требовало дополнительного кода и делало функции более запутанными.

В ECMAScript 6 (ES6) (или ES2015) была добавлена возможность использовать параметры по умолчанию в объявлении функции. Параметры по умолчанию позволяют указывать значения, которые будут использоваться вместо отсутствующих значений аргументов или значений undefined.

Синтаксис параметров по умолчанию выглядит следующим образом:

function myFunction(param1 = defaultValue1, param2 = defaultValue2) {
  // тело функции
}

Здесь мы задаем значения по умолчанию для двух параметров функции param1 и param2. Если вызвать эту функцию без передачи аргументов или с передачей значений undefined для этих параметров, будут использованы значения по умолчанию defaultValue1 и defaultValue2 соответственно.

При вызове функции с передачей аргументов, значения аргументов замещают значения по умолчанию. Например:

myFunction(10, 'Hello'); // использование переданных значений
myFunction(); // использование значений по умолчанию
myFunction(20); // использование значения по умолчанию для второго параметра

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

function greet(name, greeting = 'Привет') {
  console.log(greeting + ', ' + name + '!');
}

greet('Вася'); // Привет, Вася!
greet('Петя', 'Здравствуй'); // Здравствуй, Петя!

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

Важно отметить, что параметры по умолчанию выполняются в момент вызова функции, а не в момент определения функции. Это означает, что если значение параметра по умолчанию - функция, которая возвращает значение, эта функция будет выполнена каждый раз при вызове функции.

function getRandomNumber() {
  return Math.random();
}

function myFunction(param = getRandomNumber()) {
  console.log(param);
}

myFunction(); // будет выполнена функция getRandomNumber()
myFunction(); // будет выполнена другая независимая функция getRandomNumber()

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