Параметры
Параметры делают функцию универсальной: одна и та же функция calculatePrice посчитает цену любого товара, если передать ей нужные данные. Напомним термины: параметр — переменная в объявлении функции, аргумент — значение, которое передают при вызове.
Несколько параметров
Параметры перечисляют через запятую. Аргументы при вызове тоже пишут через запятую:
function add(a, b) {
return a + b;
}
console.log(add(2, 3)); // 5Параметров может быть сколько угодно, но если их больше трёх-четырёх, функцией становится неудобно пользоваться.
Порядок важен
Аргументы попадают в параметры по порядку: первый — в первый, второй — во второй. Имена переменных при вызове роли не играют:
function describe(name, age) {
return `${name}, ${age} лет`;
}
console.log(describe('Анна', 25)); // Анна, 25 лет
console.log(describe(25, 'Анна')); // 25, Анна летЕсли перепутать порядок, JavaScript не сообщит об ошибке — просто получится неверный результат.
Недостающие аргументы
Если аргумент не передать, параметр получит значение undefined. Лишние аргументы, наоборот, просто игнорируются:
function greet(name) {
return `Привет, ${name}!`;
}
console.log(greet()); // Привет, undefined!
console.log(greet('Анна', 'Олег')); // Привет, Анна!Значения по умолчанию
Параметру можно задать значение по умолчанию через =. Оно используется, когда аргумент не передан:
function greet(name = 'гость') {
return `Привет, ${name}!`;
}
console.log(greet()); // Привет, гость!
console.log(greet('Анна')); // Привет, Анна!Значение по умолчанию срабатывает и тогда, когда явно передали undefined. А вот null, 0 и пустая строка считаются обычными аргументами.
Параметр — это копия значения
Параметр — новая переменная внутри функции. Если изменить её, переменная снаружи, которую передали в качестве аргумента, не изменится:
function addBonus(score) {
score += 10;
return score;
}
const myScore = 50;
console.log(addBonus(myScore)); // 60
console.log(myScore); // 50Так работают числа, строки и другие простые значения. С массивами и объектами есть особенность — о ней расскажем в соответствующих главах.
Частая ошибка
Параметры со значениями по умолчанию ставят в конец списка. Если такой параметр стоит первым, пропустить его нельзя — аргумент всё равно займёт первое место:
function price(currency = '$', amount) {
return `${amount} ${currency}`;
}
console.log(price(100)); // undefined 100Правильный порядок — сначала обязательные параметры, потом необязательные: function price(amount, currency = '$').