Аргументи функції
В функцію можна передавати деякі значення. Такі значення називаются аргументами функцій.
Уявіть, що зверху на нашій чорній коробці є загрузочні воронки, в які завантажуються витратні матеріали для виготовлення результату. Цих воронок може не бути взагалі (чарівна скринька), одна, дві та більше, в залежності від потреби.
Ми вже стикалися з функціями, що приймали в себе аргументи:
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!'; }
...
}
Завдання
- Закінчіть наступний код, щоб він розраховував значення по формулі. Виведіть значення змінної d в консоль.
function calc(){
x * y + z;
}
var d = calc(5, 3, 7); - Створіть функцію, що розраховує об'єм коробки і повертає результат розрахунку, x, y та z повинні передаватися аргументами.
- Створіть функцію, що приймає в себе число і повертає назву дня тижня: 6 ==> "субота". Використайте switch-case.
- Створіть функцію, що виводить в консоль аргумент або напис "Аргументів не задано", якщо це дійсно так.
Документація
В документації ви часто будете зустрічати опис функції з квадратними дужками в круглих:
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.
Домашнє завдання
- Створіть функцію, в яку передається число. Функція повинна повертати квадрат цього числа.
- Створіть функцію, в яку передається 3 числа (x, y, z), функція обчислює і повертає об'єм вказаної коробки.
- Створіть функцію, в яку передається деяке значення і об'єкт html-сторінки, знайдений за допомогою, наприклад, функції document.querySelector. Функція повинна записати в innerText цього об'єкта значення з першого аргумента і повернути true, або false, якщо об'єкт не знайдено.
-
Створіть функцію, що приймає 5 аргументів (a, b, c, d, e). Функція повина повернути результат обчислення по формулі:
a + b * -c - --d + eЯкщо аргументи не задано, то прописати їм значення по-замовчуванню:a = 50;
b = 1;
c = 10;
d = 17;
e = ' !!!';