1. Anonüümsed funktsioonid

Kirjeldus

Anonüümsed funktsioonid on nimeta funktsioonid, mis luuakse ja kasutatakse kohe samas kohas.
Neid kasutatakse sageli ühekordsete toimingute jaoks — näiteks massiivide töötlemisel, sündmuste kuulamisel või ajastatud käivitamisel.

Selgitus

  • Luua saab väljendiga function() { ... }, mida saab omistada muutujale.
  • Funktsiooni saab välja kutsuda (muutujaNimi()), või anda edasi teisele funktsioonile argumendina.
  • Levinud kasutusalad: setTimeout, forEach, map jne.
  • IIFE (Immediately Invoked Function Expression) on anonüümne funktsioon, mis käivitub kohe pärast loomist.

Konsoli väljund

  • „Tere maailm!” — anonüümse funktsiooni väljakutse.
  • Summa arvutamine kahe argumendiga funktsioonis.
  • Massiivi elementide väljastamine forEach abil.
  • „IIFE töötab, x = 10” — näide kohe käivitatavast funktsioonist.
  • „Tere pärastlõunast!” — anonüümne funktsioon setTimeout sees.
var tervita = function() {
    console.log("Tere maailm!");
};
tervita();


//
var summa = function(a, b) {
    return a + b;
};


//
setTimeout(function() {
    console.log("Tere pärastlõunast!");
}, 1000);


//
var array = [1, 2, 3, 4, 5];

array.forEach(function(element, index) {
    console.log("Element:", element, "Index:", index);
});


//
(function() {
    var x = 10;
    console.log("IIFE töötab, x =", x);
})();

2. Noolefunktsioonid

Kirjeldus

Noolefunktsioonid (arrow functions) on lühem ja kaasaegsem viis anonüümsete funktsioonide kirjutamiseks.
Need võeti kasutusele ES6-s ja muudavad koodi lühemaks ning loetavamaks.

Selgitus

  • Kasutavad süntaksit () => { ... }.
  • Kui funktsioonis on vaid üks käsk, võib jätta ära {} ja return.
  • Kui on ainult üks argument, võib jätta ära sulud ümber argumendi.
  • Sobivad hästi meetoditega nagu map, filter, forEach jne.
  • Ei loo uut this konteksti — pärivad selle ümbritsevast koodist.

Konsoli väljund

  • „Tere noolfunktsioon!” — lihtne noolefunktsioon ilma argumentideta.
  • „Tere Mari” — noolefunktsioon ühe argumendiga.
  • „3 + 5 = 8” — funktsioon, mis tagastab väärtuse.
  • „1 on paaritu”, „2 on paaris” jne — näide noolefunktsioonist massiivi läbimisel.
const noolFunktsioon = () => console.log("Tere noolfunktsioon!");
noolFunktsioon();


let tervitaNool = nimi => console.log(`Tere ${nimi}`);
tervitaNool("Mari");


let liitmine = (a, b) => a + b;
console.log("3 + 5 =", liitmine(3,5));


const arvud = [1, 2, 3, 4, 5];
arvud.forEach(nr => {
    const paaris = nr % 2 === 0 ? "paaris" : "paaritu";
    console.log(`${nr} on ${paaris}`);
});

3. Tagasikutsumisfunktsioonid (Callback-funktsioonid)

Kirjeldus

Callback ehk tagasikutsumisfunktsioon on funktsioon, mis antakse teisele funktsioonile argumendina ja käivitatakse hiljem, kui mingi tegevus on lõpule viidud.
See on JavaScripti asünkroonse töö aluspõhimõte.

Selgitus

  • forEach() puhul kutsutakse callback iga massiivi elemendi jaoks.
  • Näites setTimeout() simuleerib andmepäringut (nagu AJAX):
    funktsioon teostaAJAXPäring() ootab 2 sekundit ja siis kutsub tagasi saadetud funktsiooni, andes talle tulemuse („Vastus andmebaasist”).
  • Selline lähenemine võimaldab kirjutada koodi, mis reageerib sündmustele hiljem (nt andmete laadimine, kasutaja klikk, serveri vastus).

Konsoli väljund

  • <li>Kati</li>, <li>Marta</li> jne — forEach abil loodud HTML-elemendid.
  • „Vastus saadud: Vastus andmebaasist” — callback-funktsioon käivitub pärast viivitust.
let nimed = ["Kati", "Marta", "Andres", "Jüri", "Liisa"];

nimed.forEach(nimi => console.log(`&lt;li>${nimi}&lt;/li>`));

//
const teostaAJAXPäring = (url, callback) => {
    setTimeout(() => {
        const vastus = "Vastus andmebaasist";
        callback(vastus);
    }, 2000);
};

const callbackFunktsioon = vastus => {
    console.log("Vastus saadud:", vastus);
};

teostaAJAXPäring("https://api.example.com/data", callbackFunktsioon);

Ülesanne:

1. Erinevad funktsioonid

Kirjeldus

See ülesanne demonstreerib klassikalist funktsiooni ja noolefunktsiooni ilma argumentideta.
Eesmärk on näidata, kuidas saab funktsioone luua ja kutsuda.

Selgitus

  • Klassikaline funktsioon (function) võimaldab funktsiooni defineerida nimega ja seda kutsuda.
  • Noolefunktsioon (=>) on lühem viis sama tegevuse jaoks.
  • Mõlemad versioonid täidavad sama ülesannet: kuvavad sinu nime konsoolis.
// Klassikaline funktsioon
function minuNimi() {
    console.log("Minu nimi on Nikita");
}
minuNimi();

// Noolefunktsioon
const minuNimiNoolega = () => {
    console.log("Minu nimi on Nikita");
};
minuNimiNoolega();

2. Argumendiga funktsioon — kuupäevEesti

📖 Kirjeldus

Funktsioon kuupaevEesti võtab argumendiks kuupäeva stringina ja kuvab selle kuupäeva eesti keeles.

🧠 Selgitus

Funktsioon väljastab kuupäeva korrektse kuupäev-kuu-aasta vormingus.

Kuupäeva string jagatakse päevaks, kuuks ja aastaks (split).

Kuunumber teisendatakse indeksiks eesti keelse kuu nime massiivis.