Ako učite JavaScript, verovatno ste naišli na pojam Funkcija Višeg Reda (Higher-Order Functions). Iako zvuči složeno, nije toliko komplikovano. JavaScript, kao funkcionalni programski jezik, omogućava korišćenje ovih funkcija, koje su ključne u programiranju zasnovanom na funkcijama.
Funkcionalno Programiranje
Funkcionalno programiranje podrazumeva kreiranje i korišćenje funkcija kao primarnih gradivnih elemenata. U ovom pristupu, funkcije se mogu prosleđivati kao parametri drugim funkcijama ili vraćati kao rezultati. Ovaj način razmišljanja omogućava organizovano i efikasno pisanje koda.
Prvoklasne Funkcije
JavaScript tretira funkcije kao "prvoklasne građane". To znači da su funkcije objekti — specifična vrsta objekata koji se mogu dodeljivati promenljivama, prosleđivati kao parametri i koristiti u različitim kontekstima, kao što je slučaj sa brojevima ili stringovima.
Primer:
function pozdrav() {
console.log('Zdravo, svete!');
}
pozdrav(); // Ispisuje 'Zdravo, svete!'
// Dodavanje svojstva funkciji
pozdrav.jezik = 'srpski';
console.log(pozdrav.jezik); // Ispisuje 'srpski'
Dodeljivanje Funkcija Promenljivama
U JavaScriptu, funkcije se mogu dodeljivati promenljivama:
const kvadrat = function(x) {
return x * x;
};
console.log(kvadrat(5)); // Ispisuje 25
Prosleđivanje Funkcija kao Parametara
Jedna od glavnih karakteristika prvoklasnih funkcija je mogućnost da se proslede kao argumenti drugim funkcijama:
function formalniPozdrav() {
console.log("Kako ste?");
}
function neformalniPozdrav() {
console.log("Šta ima?");
}
function pozdravVrsta(vrsta, formalan, neformalan) {
if (vrsta === 'formalan') {
formalan();
} else if (vrsta === 'neformalan') {
neformalan();
}
}
pozdravVrsta('neformalan', formalniPozdrav, neformalniPozdrav); // Ispisuje 'Šta ima?'
Funkcije Višeg Reda
Funkcije Višeg Reda su funkcije koje prihvataju druge funkcije kao argumente ili ih vraćaju kao rezultate. Ovo omogućava elegantnije i sažetije pisanje koda. Primeri uključuju metode map
, filter
i reduce
.
map
Metod
map
kreira novi niz tako što poziva funkciju na svakom elementu postojećeg niza:
Bez map
metode:
const arr1 = [10, 20, 30, 40, 50];
const arr2 = [];
for (let i = 0; i < arr1.length; i++) {
arr2.push(arr1[i] * 2);
}
console.log(arr2); // [20, 40, 60, 80, 100]
Sa map
metodom:
const arr1 = [10, 20, 30. 40, 50];
const arr2 = arr1.map(item => item * 2);
console.log(arr2); // [20, 40, 60, 8-, 100]
filter
Metod
filter
stvara novi niz sa svim elementima koji zadovoljavaju zadati uslov:
const osobe = [
{ ime: 'Pera', godine: 13 },
{ ime: 'Mika', godine: 18 },
{ ime: 'Laza', godine: 64 },
{ ime: 'Ana', godine: 10 },
];
const punoletni = osobe.filter(osoba => osoba.godine >= 18);
console.log(punoletni); // [ { ime: 'Mika', godine: 18 }, { ime: 'Laza', godine: 64 } ]
reduce
Metod
reduce
izvršava funkciju na svakom članu niza i vraća jedinstvenu vrednost:
Primer sa reduce
:
const arr = [4, 6, 10, 5, 25];
const suma = arr.reduce((akumulator, vrednost) => akumulator + vrednost, 0);
console.log(suma); // 50
Kreiranje Funkcije Višeg Reda
Zamislite da JavaScript nema ugrađenu map
metodu. Možemo sami da je kreiramo:
function mapiraj(arr, fn) {
const noviNiz = [];
for (let i = 0; i < arr.length; i++) {
noviNiz.push(fn(arr[i]));
}
return noviNiz;
}
const duzine = mapiraj(['JavaScript', 'Python'], item => item.length);
console.log(duzine); // [10, 6]
Zaključak
Funkcije Višeg Reda omogućavaju fleksibilnost i jednostavnost koda u JavaScriptu. Korišćenjem ovih funkcija, naš kod postaje sažetiji, organizovaniji i lakši za održavanje.
Top comments (0)