Klassikalised funktsioonid
Klassikalised funktsioonid on nimetatud funktsioonid, mis võivad võtta argumente, omada funktsiooni keha ja tagastada väärtusi. Neid kasutatakse konkreetsete ülesannete või arvutuste täitmiseks ning need on programmeerimises väga paindlikud ja mitmekülgsed. Klassikaliste funktsioonide eeliseks on nende korduvkasutamise võimalus: ühe korra loodud funktsiooni saab vajadusel mitu korda erinevates kohtades koodis välja kutsuda, ilma et oleks vaja sama koodi uuesti kirjutada. Lisaks toetavad klassikalised funktsioonid rekursiooni, mis tähendab, et funktsioon võib kutsuda iseennast, võimaldades lahendada keerulisi arvutusülesandeid, näiteks puustruktuuride läbimist või matemaatilisi probleemide lahendusi. Klassikalised funktsioonid sobivad ka objektorienteeritud programmeerimisega, kus neid saab kasutada meetoditena objektide sees. Funktsioonid võivad tagastada väärtusi, mis võimaldab neid kasutada ka arvutustes, andmete töötlemisel või teiste funktsioonide argumentidena.
Anonüümsed funktsioonid
Anonüümsed funktsioonid on nimetamata funktsioonid, mis luuakse otse koodis. Erinevalt klassikalistest funktsioonidest ei vaja need konkreetset nime, mis teeb nende loomise kiiremaks ja lihtsamaks. Neid saab omistada muutujale, edastada argumendina teisele funktsioonile või kasutada objektide atribuudina. Anonüümsed funktsioonid on eriti kasulikud ühekordsete operatsioonide puhul, kus funktsioon ei pea olema korduvkasutatav. Näiteks sobivad need sündmuste käsitlemiseks, nagu nuppude klikid, ajastatud ülesannete täitmiseks või asünkroonsete protsesside, näiteks API-päringute, töötlemiseks. Tänu oma paindlikkusele ja lühidusele võimaldavad anonüümsed funktsioonid kirjutada kompaktsemat ja loetavamat koodi. Samuti on neid tihti kasutatud kolmanda osapoole teekide ja raamistike funktsioonide sisendina, kuna need ei vaja lisanimetust, vaid saab otse käitumise määrata.
Kokkuvõttes pakuvad klassikalised ja anonüümsed funktsioonid erinevaid võimalusi JavaScripti arendamisel: klassikalised funktsioonid on tugevad korduvkasutuseks ja keerukate ülesannete lahendamiseks, anonüümsed funktsioonid aga mugavad väikeste ja ühekordsete toimingute jaoks. Nende mõistmine on hädavajalik igale arendajale, kes soovib kirjutada puhtaid, loetavaid ja efektiivseid veebirakendusi.
Näide anonüümsest funktsioonist:
var tervita = function() {
console.log("Tere maailm!");
};
tervita();

Siin on näide anonüümsest funktsioonist argumentide kasutamisel, mis tagastab summa kahe arvu vahel
var summa = function(a, b) {
return a + b;
};
var tulemus = summa(3, 5);
console.log(tulemus);

Anonüümne funktsioon koos argumendiga
setTimeout(function() {
console.log("Tere pärastlõunast!");
}, 1000);

Anonüümseid funktsioone saab kasutada massiivi elementide kuvamiseks
var array = [1, 2, 3, 4, 5];
array.forEach(function(element) {
console.log(element);
});

forEach meetod võib vastu võtta ka teisi parameetreid, näiteks indeksi või massiivi ennast
const array2 = [1, 2, 3, 4, 5];
array2.forEach(function(element, index, array) {
console.log("Element:", element);
console.log("Index:", index);
console.log("Array:", array);
});

IIFE (Immediately Invoked Function Expression)
(function() {
var x = 10;
console.log(x); // Output: 10
})();

Lihtne tervitus
const noolFunktsioon2 = () => {
console.log("Tere noolfunktsioon!");
};
noolFunktsioon2();

Kui funktsiooni kehas on ainult üks avaldus, siis saab sulud {} ära jätta
const noolFunktsioon3 = () => console.log("Tere noolfunktsioon!");
noolFunktsioon3();

Noolefunktsioon argumentidega
let tervita2 = (nimi) => {console.log(`Tere ${nimi}`)};
tervita2("Juhan");

Lihtsustatud noolefunktsioon, kui argumente on üks
let tervita3 = nimi => console.log(`Tere ${nimi}`);
tervita3("Mari");

Kui kehas on rohkem ridu, sulud jäävad
let liitmine = (a, b) => {
let result = a + b;
return result;
};
console.log(liitmine(3,5));

Lihtsustatud noolefunktsioon argumentidega
let liitmine2 = (a, b) => a + b;
console.log(liitmine2(3,5));

Noolefunktsioon massiivi elementide kuvamiseks
const array3 = [1, 2, 3, 4, 5];
array3.forEach(element => console.log(element));

Funktsioon, mis leiab kas arv on paaris või paaritu
const number = 5;
const isEven = number => number % 2 === 0 ? "paaris" : "paaritu";
console.log(isEven(number));

Sama näide massiivi korral
const arvud = [1, 2, 3, 4, 5];
arvud.forEach(nr => {
const paaris = nr % 2 === 0 ? "paaris" : "paaritu";
console.log(`${nr} is ${paaris}`);
});

Callback funktsioonid massiivi elementide kuvamiseks
let nimed = ["Kati", "Marta", "Andres", "Jüri", "Liisa"];
nimed.forEach(function(nimi) {
console.log(`<li>${nimi}</li>`);
});

Funktsioon eraldi defineerides
const kasutaja = function(nimi) {
console.log(`<li>${nimi}</li>`);
};
nimed.forEach(kasutaja);

Sama noolefunktsioonina
const kasutaja2 = nimi => console.log(`<li>${nimi}</li>`);
nimed.forEach(kasutaja2);
Lühidalt otse noolefunktsioonina
nimed.forEach(nimi => console.log(`<li>${nimi}</li>`));

Lihtne AJAX API päring koos callback-funktsiooniga
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);
