Аргументы функции в JavaScript

Аргументы функции - это значения, которые мы передаем функции при вызове.

function showMessage(text) {
  console.log(text);
}

showMessage('Учусь писать функции');

В этом примере строка ‘Учусь писать функции’ - аргумент. Она передается в функцию showMessage().

Что такое аргумент функции

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

function greetUser(name) {
  console.log('Привет, ' + name + '!');
}

greetUser('Анна');

‘Анна’ - это аргумент. Благодаря ему функция понимает, с каким именем нужно работать.

Если вызвать эту же функцию с другим аргументом, результат тоже будет другим.

greetUser('Игорь');
greetUser('Мария');

Результат:

Привет, Игорь!
Привет, Мария!

Параметр и аргумент

Параметр и аргумент часто путают, потому что они работают вместе.

function double(number) {
  console.log(number * 2);
}

double(5);

number - параметр. Он записан при объявлении функции.

5 - аргумент. Он передан при вызове функции.

Можно запомнить так: параметр - это имя внутри функции, аргумент - это конкретное значение при вызове.

Один аргумент

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

function showPrice(price) {
  console.log('Цена: ' + price + ' рублей');
}

showPrice(1200);

Результат:

Цена: 1200 рублей

Аргументом может быть строка, число, логическое значение и другие значения JavaScript.

Несколько аргументов

Если функции нужно несколько значений, аргументы передаются через запятую.

function showOrder(product, price) {
  console.log(product + ': ' + price + ' рублей');
}

showOrder('Книга', 900);

Результат:

Книга: 900 рублей

Первый аргумент попадает в первый параметр, второй аргумент - во второй параметр.

Аргументом может быть выражение

В аргумент можно передать не только готовое значение, но и выражение. JavaScript сначала вычислит выражение, а потом передаст результат в функцию.

function showResult(value) {
  console.log(value);
}

showResult(10 + 5);

Результат:

15

То же самое работает со строками.

function showMessage(text) {
  console.log(text);
}

showMessage('Привет, ' + 'Анна');

Результат:

Привет, Анна

Переменная как аргумент

Часто аргументом становится значение, которое уже лежит в переменной.

let userName = 'Олег';

function greetUser(name) {
  console.log('Привет, ' + name + '!');
}

greetUser(userName);

Результат:

Привет, Олег!

В функцию передается не имя переменной userName, а значение, которое в ней хранится.

Если аргументов меньше

Если передать меньше аргументов, чем функция ожидает, оставшиеся параметры получат значение undefined.

function showUser(name, age) {
  console.log(name);
  console.log(age);
}

showUser('Анна');

Результат:

Анна
undefined

JavaScript не остановит программу из-за пропущенного аргумента. Но функция может отработать не так, как вы рассчитывали.

Если аргументов больше

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

function showUser(name) {
  console.log(name);
}

showUser('Анна', 25, 'Москва');

Результат:

Анна

В параметр name попал только первый аргумент. Остальные значения в этом примере не используются.

Получать произвольное количество аргументов тоже можно, но для этого используют отдельные инструменты: arguments или rest parameters. Их лучше разбирать отдельно.

Итого

1. Аргументы - это значения, которые передаются функции при вызове.

2. Параметр записывается при объявлении функции, аргумент передается при вызове.

3. Если аргументов несколько, они передаются через запятую.

4. Порядок аргументов важен: первое значение попадает в первый параметр, второе - во второй.

5. Если аргумент не передали, соответствующий параметр получит undefined.