В JavaScript функції можуть бути визначені з параметрами за замовчуванням. Це означає, що якщо аргумент не переданий для параметра під час виклику функції, буде використано значення за замовчуванням.
Розглянемо наступну функцію:
function greet(name = "World", greeting = "Hello") {
console.log(`${greeting}, ${name}!`);
}
У цій функції name за замовчуванням має значення "World", а greeting за замовчуванням — "Hello". Якщо ми викликаємо greet() без аргументів, виводиться "Hello, World!".
А що, якщо ми хочемо використовувати значення за замовчуванням для name, але передати нове значення для greeting?
Один зі способів досягти цього — передати undefined як перший аргумент. Це змусить JavaScript використати значення за замовчуванням для цього аргументу.
function greet(name = "World", greeting = "Hello") {
console.log(`${greeting}, ${name}!`);
}
greet(undefined, "Hi"); // "Hi, World!"
Однак передача undefined як аргумент може бути вводом в оману, оскільки це може означати, що аргумент навмисно встановлено в undefined.
Більш елегантним рішенням буде використання об'єкта налаштувань як параметра функції. Це дозволяє передавати об'єкт тільки з тими властивостями, які ми хочемо встановити, а для решти буде використовуватись значення за замовчуванням.
Ось як ми можемо змінити функцію greet, щоб вона використовувала об'єкт налаштувань:
function greet({ name = "World", greeting = "Hello" } = {}) {
console.log(`${greeting}, ${name}!`);
}
Тепер ми можемо викликати greet з новим значенням для greeting, і буде використано значення за замовчуванням для name:
greet({ greeting: "Hi" }); // Виведе: "Hi, World!"
Цей підхід є більш явним і менш схильним до помилок, оскільки чітко видно, які параметри встановлюються, а які використовують свої значення за замовчуванням.
Спочатку опубліковано на https://tahajiru.com.
Перекладено з: Invoke Function with Default Value for First Argument and Custom Value for Second Argument in JavaScript