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

Это наиболее полезно, когда мы реализуем какие-либо служебные функции, где вызов функции не находится в наших руках.

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

const greetings = (name) => {
   console.log(`Hello, ${name}`);
}
greetings();  //Output: Hello, undefined

В приведенном выше примере, если мы видим, мы не передаем никаких аргументов, хотя функция ожидает один аргумент. Итак, в консоли мы видим Hello, undefined.

Итак, чтобы напечатать осмысленный вывод в консоли, мы проверяли, является ли typeof параметром, и присваивали значение по умолчанию или использовали logical OR (||), как показано ниже.

const greetings = (name) => {
   const nameVal = (typeof name !== "undefined") ? name: "World";
   console.log(`Hello, ${nameVal}`);
}
greetings();    //Output: Hello, World
//Or like using logical OR operator
const greetings = (name) => {
   console.log(`Hello, ${name || "World"}`);
}
greetings();    //Output: Hello, World
//Or like this if the parameter is being used in multiple places in the function body
const greetings = (name) => {
   const nameVal = name || "World";
   console.log(`Hello, ${nameVal}`);
}
greetings();    //Output: Hello, World

Учтите, что у вас есть более одного параметра, и эти параметры используются в нескольких местах в функции, тогда это будет нечисто. Таким образом, чтобы использовать значения по умолчанию только тогда, когда параметры по умолчанию no value is passed или undefined is passed будут очень кстати.

//This is how default values can be given to the function parameters
const greetings = (name = "World") => {
    console.log(`Hello, ${name}`);
}
greetings();     //Output: Hello, World

Если мы видим в приведенном выше примере, в самом заголовке функции мы присваиваем значение параметрам. Таким образом, тело функции будет намного чище и понятнее. Кроме того, будет легко, если будет более одного параметра.

const greetings = (greet = "Hello", name = "World") => {
    console.log(`${greet}, ${name}`);
}
greetings();                   //Output: Hello, World
greetings("Hey", "John");      //Output: Hey, John
greetings(undefined, "John");  //Output: Hello, John

Передача ложных значений

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

const print = (val = "Tada") => {
   console.log(`Argument Value: ${val}`);
}
print('');     //Output: Argument Value: ''
print(null);   //Output: Argument Value: null
print();       //Output: Argument Value: Tada

Деструктурированныйпараметр со значением по умолчанию

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

const greet = ({name} = {name: "John"}) => {
   console.log(`Hello, ${name}`);
}
greet({name: "JavaScript"});   //Output: Hello, JavaScript
greet();                       //Output: Hello, John

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

Ниже приведены соответствующие примеры,