JavaScript виконання коду JavaScript підключення зовнішнього файлу JavaScript console.log JavaScript змінні і константи JavaScript типи даних JavaScript операції зі змінними JavaScript перетворення даних JavaScript масиви JavaScript умовні конструкції JavaScript цикли JavaScript функції JavaScript область видимості змінних JavaScript замикання і функції IIFE JavaScript Паттерн Модуль JavaScript рекурсивні функції JavaScript перевизначення функцій JavaScript hoisting JavaScript передача параметрів за значенням і за посиланням JavaScript стрілочні функції JavaScript ООП Object JavaScript ООП вкладені об'єкти і масиви в об'єктах JavaScript ООП перевірка наявності і перебір методів і властивостей JavaScript ООП об'єкти у функціях JavaScript ООП конструктори об'єктів JavaScript ООП розширення об'єктів. prototype JavaScript ООП інкапсуляція JavaScript ООП Функція як об'єкт. Методи call і apply JavaScript ООП спадкування JavaScript ООП Ключове слово this JavaScript ООП Object destructuring JavaScript ООП класи JavaScript ООП Date. Робота з датами JavaScript Об'єкт Math. математичні операції JavaScript Об'єкт Array. Робота з масивами JavaScript ООП об'єкт Number JavaScript String JavaScript String Об'єкт RegExp. Регулярні вирази JavaScript String Регулярні вирази в методах String JavaScript String Синтаксис регулярних виразів JavaScript Робота з браузером і BOM JavaScript діалогові вікна JavaScript Історія браузера. об'єкт history JavaScript об'єкт location JavaScript об'єкт navigator JavaScript таймери JavaScript DOM Введення JavaScript DOM Об'єкт document. Пошук елементів JavaScript DOM Властивості об'єкта document JavaScript DOM Об'єкт Node. Навігація по DOM JavaScript DOM Створення, додавання і видалення елементів веб-сторінки JavaScript DOM Об'єкт Element. управління елементами JavaScript DOM Зміна стилю елементів JavaScript події. Введення в обробку подій. JavaScript події обробники JavaScript події. об'єкт Event JavaScript події. поширення подій JavaScript події миші JavaScript події клавіатури JavaScript FORMS. Форми і їх елементи JavaScript FORMS. Кнопки JavaScript FORMS. текстові поля JavaScript FORMS. Прапорці та перемикачі JavaScript FORMS. Список select JavaScript JSON JavaScript зберігання даних. cookie JavaScript зберігання даних. Web Storage JavaScript Collection. Ітератори JavaScript Collection. Генератори JavaScript Collection. Множина Set JavaScript Collection. Map JavaScript Collection. WeakSet і WeakMap JavaScript AJAX. XMLHttpRequest JavaScript AJAX. Відправка даних JavaScript AJAX. Promise в Ajax-запитах

JavaScript функції


Функція - це набір інструкцій, що виконуює певну дію або обчислює певне значення.

Синтаксис оголошеної функції:

function імя_функції([параметр [, ...]]){
 
    // інструкції
}

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

  • вона може містити тільки цифри, букви, символи підкреслення та долара ( $ ) і має починатися з літери, символу підкреслення або долара.
  • Після імені функції в дужках () йде перерахування параметрів. Навіть якщо параметрів у функції немає, то просто йдуть порожні дужки. Потім в фігурних дужках {} йде тіло функції, що містить набір інструкцій.

Визначимо найпростішу функцію:

function display(){
 
    document.write("функція в JavaScript");
}

Ця функція називається display() . Вона не приймає ніяких параметрів і все, що вона робить, це виводить на веб-сторінку рядок.

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

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
<script>

// наша функція display()

function display(){
 
    document.write("функція в JavaScript");
}


display();    // виклик функції display()


</script>
</body>
</html>

Необов'язково давати функцій певне ім'я. Можна використовувати анонімні функції:

var display = function(){  // визначення функції
 
    document.write("функція в JavaScript");
}

display();   // виклик функції

Фактично ми визначаємо змінну display і присвоюємо їй посилання на функцію. А потім по імені змінної функція викликається.

Також ми можемо динамічно привласнювати функції для змінної:

function goodMorning(){
 
    document.write("Добрий ранок");
}


function goodEvening(){
 
    document.write("Добрий вечір");
}


var message = goodMorning;
message();                    // Добрий ранок

message = goodEvening;
message();                    // Добрий вечір

параметри функції

Розглянемо передачу параметрів:

function display(x){  // оголошення функції
 
    var z = x * x;
    document.write(x + " в квадраті рівне " + z);
}
 
display(5);           // виклик функції з параметром х = 5

Функція display приймає один параметр - x. Тому при виконанні функції ми можемо передати для нього значення, наприклад, число 5 , як в даному випадку.

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

function sum(a, b, c){
    let d = a + b + c;
    console.log(d);
}
sum(1, 2, 3);


let nums = [4, 5, 6];
sum(...nums);

У другому випадку в функцію передається числа з масиву nums . Але щоб передавався не просто масив, як одне значення, а саме числа з цього масиву, застосовується spread -оператор (три крапки ... ).


необов'язкові параметри

Функція може приймати безліч параметрів, але при цьому частина або всі параметри можуть бути необов'язковими. Якщо для параметрів не передається значення, то за замовчуванням вони мають значення " undefined ".

function display(x, y){
 
    if(y === undefined) y = 5;
    if(x === undefined) x = 8;
    let z = x * y;
    console.log(z);
}

display();       // 40
display(6);      // 30
display(6, 4)    // 24

Тут функція display приймає два параметри. При виконанні функції ми можемо перевірити їх значення. При цьому, викликаючи функцію, необов'язково передавати для цих параметрів значення. Для перевірки наявності значення параметрів використовується порівняння зі значенням undefined .

Є й інший спосіб визначення значення для параметрів за замовчуванням:

function display(x = 5, y = 10){
    let z = x * y;
    console.log(z);
}

display();      // 50
display(6);     // 60
display(6, 4)   // 24

Якщо параметрам x і y не передаються значення, то вони виходять як значення числа 5 і 10 відповідно. Такий спосіб більш лаконічний і інтуїтивний, ніж порівняння з undefined .

При цьому значення параметра за замовчуванням може бути похідним, представляти вираз:

function display(x = 5, y = 10 + x){
    let z = x * y;
    console.log(z);
}

display();      // 75
display(6);     // 96
display(6, 4)   // 24

В даному випадку значення параметра y залежить від значення x .

При необхідності ми можемо отримати всі передані параметри через глобально доступний масив arguments :

function display(){

    var z = 1;
    
    for(var i = 0; i < arguments.length; i++){
        z *= arguments[i];
        console.log(z);
    }

}

display(6);         // 6
display(6, 4)       // 24
display(6, 4, 5)    // 120

При цьому навіть не важливо, що при визначенні функції ми не вказали жодних параметрів, ми все одно можемо їх передати і отримати їх значення через масив arguments .


Невизначена кількість параметрів

За допомогою spread -оператора ми можемо вказати, що за допомогою параметра можна передати змінну кількість значень:

function display(season, ...temps){
   
 console.log(season);

    for(index in temps){
        console.log(temps[index]);
    }

}


display("Весна", -2, -3, 4, 2, 5);
display("Літо", 20, 23, 31);

В даному випадку другий параметр ...temps вказує, що замість нього можна передати різну кількість значень. Сама функція temps фактично являє масив переданих значень, які ми можемо отримати. При цьому незважаючи на це, при виконанні функції в неї передається не масив, а самі окремі значення.

Консольний результат:

return                             [/tag_code]:[/p]

[code]var y = 5;
var z = square(y);

document.write(y + " в квадраті рівне " + z);
 
function square(x) {
  return x * x;
}

Після оператора return йде значення, яке треба повернути з методу. В даному випадку це квадрат числа х .

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

var z = square(y);

Функції в якості параметрів

Функції можуть виступати в якості параметрів інших функцій:

function sum(x, y){
    return x + y;
}
 
function subtract(x, y){
    return x - y;
}
 
function operation(x, y, func){
  
    var result = func(x, y);
    console.log(result);
}
 
console.log("Sum");
operation(10, 6, sum);  // 16
 
console.log("Subtract");
operation(10, 6, subtract); // 4

Функція operation приймає три параметри: x , y і func . func - представляє функцію, причому на момент визначення operation не важливо, що це буде за функція. Єдине, що відомо, що функція func може приймати два параметри і повертати значення, яке потім відображається в консолі браузера. Тому ми можемо визначити різні функції (наприклад, функції sum і subtract в даному випадку) і передавати їх в виклик функції operation .


Повернення функції з функції

Одна функція може повертати іншу функцію:

function menu(n){
  
    if(n==1) return function(x, y){ return x+y;}
    else if(n==2) return function(x, y){ return x - y;}
    else if(n==3) return function(x, y){ return x * y;}
    return undefined;
}
 
for(var i=1; i < 5; i++){
    var action = menu(i);
    if(action!==undefined){
        var result = action(5, 4);
        console.log(result);
    }
}

В даному випадку функція menu в залежності від переданого в неї значення повертає одну з трьох функцій або undefined .


Наш партнер:
beta test mp3 playlist downloader