В 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