Sobes.tech
Intern

Какви функции съществуват в JavaScript?

sobes.tech AI

Отговор от AI

В JavaScript съществуват следните видове функции:

  • Декларации на функции (Function Declarations): Основен синтаксис за дефиниране на функция. Те са hoisted при компилация.

    function sayHello() {
      // Тяло на функцията
      console.log("Здравей!");
    }
    
  • Функционални изрази (Function Expressions): Функцията е присвоена на променлива. Не са hoisted. Могат да бъдат именувани или анонимни.

    const greetUser = function(name) {
      // Тяло на функцията
      console.log(`Здравей, ${name}!`);
    };
    
  • Стрелкови функции (Arrow Functions): По-кратък синтаксис, въведен в ES6. Имат особености в поведението на this.

    const add = (a, b) => a + b;
    
  • Методи на обекти (Object Methods): Функции, дефинирани като свойства на обект.

    const user = {
      name: "Иван",
      sayName: function() {
        console.log(this.name);
      }
    };
    
  • Генераторни функции (Generator Functions): Функции, които могат да спират и възобновяват изпълнението си с yield. Връщат итератор.

    function* counter() {
      let i = 0;
      while (true) {
        yield i++;
      }
    }
    
  • Асинхронни функции (Async Functions): Функции, работещи с промиси и позволяващи използването на await за изчакване на изпълнение.

    async function fetchData() {
      const response = await fetch("https://api.example.com/data");
      const data = await response.json();
      return data;
    }
    
  • Конструкторски функции (Constructor Functions): Функции, използвани с new за създаване на обекти. Традиционен подход преди появата на класове.

    function Person(name, age) {
      this.name = name;
      this.age = age;
    }
    
    const person1 = new Person("Петър", 30);
    
  • Функции за обратно извикване (Callback Functions): Функции, предавани като аргумент за изпълнение в определен момент.

    function processArray(arr, callback) {
      for (let i = 0; i < arr.length; i++) {
        callback(arr[i]);
      }
    }
    
    processArray([1, 2, 3], function(item) {
      console.log(item * 2);
    });
    
  • IIFE - Незабавно извикващи се функционални изрази (Immediately Invoked Function Expressions): Функции, изпълнявани веднага след дефинирането си. Използват се за създаване на локална област.

    (function() {
      // Локален код
      const secret = "тайна";
      console.log(secret);
    })();
    

Всеки тип функция има свои особености в синтаксиса, обхвата (this) и сценарии на използване.