Аргументи функції

В функцію можна передавати деякі значення. Такі значення називаются аргументами функцій.

Уявіть, що зверху на нашій чорній коробці є загрузочні воронки, в які завантажуються витратні матеріали для виготовлення результату. Цих воронок може не бути взагалі (чарівна скринька), одна, дві та більше, в залежності від потреби.

Ми вже стикалися з функціями, що приймали в себе аргументи:

alert('hello');
console.log('результат:', a, b);
parseInt('35px');

У якості аргументів можуть виступати певні значення, змінні, об'єкти, виклики функцій.

Наприклад, у нас є деяка функція, не важливо що вона робить:

function someFun(x){ ... }
let user = 'John Doe';
someFun(55);    // виклик функції з певним значенням аргумента
someFun(user);    // виклик функції зі змінною в аргументі
someFun(document.body);    // виклик функції з аргументом в аргументі
someFun(otherFun());    // виклик функції з викликом функції в аргументі

Аргументи всередині функцій належать простору імен цій функції. Тобто, в функції створюється змінна із заданим іменем, і якщо поза межами функції існує змінна з таким же ім'ям, то це буде дві різні змінні:

let x = 42;
function fun(x){
  x *= 2;
  console.log('fun.x =', x);
}
fun(x);
console.log('global.x =', x);

Приклад функції з двома аргументами:

function fun(name, family){
  return "Пользователь: " + name + ' ' + family;
}
console.log(fun('Полиграф', 'Шариков'));

Кількість аргументів у ініціалізації (створенні) функції може відрізнятися від кількості аргументів у виклику функції.

Протестуйте наступний код, проаналізуйте результат:

function fun(a, b, c){
  console.log(a, b, c);
}

fun(5, 2);
fun(5, 2, 3, 7);

Якщо при виклику функції задано менше аргументів, ніж при її ініціалізації - можна робити перевірку і задавати значення по замовчуванню або виводити в консоль повідомлення про помилку і нестачу аргументів:

function fun(a, b, c){
  if (a === undefined) { a = 1; }
  if (b === undefined) { b = 0; }
  if (c === undefined) { c = 'Hello!'; }
  ...
}

Завдання

  1. Закінчіть наступний код, щоб він розраховував значення по формулі. Виведіть значення змінної d в консоль. function calc(){
      x * y + z;
    }

    var d = calc(5, 3, 7);
  2. Створіть функцію, що розраховує об'єм коробки і повертає результат розрахунку, x, y та z повинні передаватися аргументами.
  3. Створіть функцію, що приймає в себе число і повертає назву дня тижня: 6 ==> "субота". Використайте switch-case.
  4. Створіть функцію, що виводить в консоль аргумент або напис "Аргументів не задано", якщо це дійсно так.

Документація

В документації ви часто будете зустрічати опис функції з квадратними дужками в круглих:

function setPosition(x, y[, baseX, baseY]) { ... }
function min(a, b[, c, ...]) { ... }

При описі функцій це означає необов'язкові, додаткові аргументи. Функція буде працювати як з ними, так і без них:

setPosition(250, 120);
setPosition(250, 120, 40, 40);
min(5, 15);
min(7, 4, 12);
min(3, 2, 4, 11, 6, 5, 9, 18);

Приклади
MDN Math.min();
jQuery fx.after();
MooTools Fx.Morph();
MooTools Request.JSON.

Домашнє завдання

  1. Створіть функцію, в яку передається число. Функція повинна повертати квадрат цього числа.
  2. Створіть функцію, в яку передається 3 числа (x, y, z), функція обчислює і повертає об'єм вказаної коробки.
  3. Створіть функцію, в яку передається деяке значення і об'єкт html-сторінки, знайдений за допомогою, наприклад, функції document.querySelector. Функція повинна записати в innerText цього об'єкта значення з першого аргумента і повернути true, або false, якщо об'єкт не знайдено.
  4. Створіть функцію, що приймає 5 аргументів (a, b, c, d, e). Функція повина повернути результат обчислення по формулі: a + b * -c - --d + e Якщо аргументи не задано, то прописати їм значення по-замовчуванню: a = 50;
    b = 1;
    c = 10;
    d = 17;
    e = ' !!!';