Sobes.tech
Junior

Kokius būdus funkcijų kūrimui žinote?

sobes.tech AI

Atsakymas iš AI

Yra keletas būdų kurti funkcijas JavaScript, kiekvienas su savo ypatybėmis:

  1. Funkcijų deklaracijos (Function Declarations): Klasikinis būdas kurti funkciją. Jos (hoisted) pakeliamos į viršų matomumo srityje, leidžiant jas kviesti prieš deklaraciją.

    // Funkcijos deklaracija naudojant function
    function greet(name) {
      return "Labas, " + name + "!";
    }
    
  2. Funkcijų išraiškos (Function Expressions): Funkcija kuriama kaip išraiškos dalis ir priskiriama kintamajam. Jos (not hoisted) nėra pakeliamos tokia pačia apimtimi kaip funkcijų deklaracijos.

    // Funkcijos išraiška
    const greet = function(name) {
      return "Labas, " + name + "!";
    };
    
  3. Rodyklės funkcijos (Arrow Functions): Sutrumpinta sintaksė funkcijų išraiškoms. Skiriasi nuo klasikinių funkcijų this ypatybėmis ir neturi savo argumentų (arguments).

    // Rodyklės funkcija
    const greet = (name) => {
      return "Labas, " + name + "!";
    };
    
    // Sutrumpinta forma su neexplicitiniu grąžinimu
    const greetShort = (name) => "Labas, " + name + "!";
    
  4. Konstruktoriaus funkcijos (Constructor Functions): Naudojamos objektų kūrimui. Kviečiamos su raktiniu žodžiu new.

    // Konstruktoriaus funkcija
    function Person(name, age) {
      this.name = name;
      this.age = age;
    }
    
    // Objekto pavyzdžio sukūrimas naudojant konstruktorių
    const person1 = new Person("Aleksej", 30);
    
  5. Klasės metodai (Class Methods): Klasėse (sintaksinis cukrus ant prototipinio paveldėjimo) funkcijos apibrėžiamos kaip metodai.

    // Klasės apibrėžimas su metodu
    class Greeter {
      greet(name) {
        return "Labas, " + name + "!";
      }
    }
    
    // Klasės pavyzdžio sukūrimas ir metodo kvietimas
    const greeter = new Greeter();
    const message = greeter.greet("Pasaulis");
    
  6. IIFE (Iš karto iškviečiamos funkcijos): Funkcinis išraiška, kuri iš karto po sukūrimo yra vykdoma. Dažnai naudojama vietinės matomumo srities kūrimui.

    // IIFE
    (function() {
      // IIFE viduje kodas
      console.log("Ši funkcija iš karto vykdoma!");
    })();
    

Kiekvienas metodas turi savo privalumų ir trūkumų, o pasirinkimas priklauso nuo konkretaus užduoties ir konteksto.