Необязательные параметры в 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
codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©