WEBnSTUDY.com
JavaScript

Javascript funkcije

Korisničke funkcije su praktično jedini tip potprograma u JavaScriptu. Kreiranje funkcija predstavlja osnovu programiranja u ovom jeziku i ključno je za njegovo savlađivanje. Ako se do sada niste upoznali sa ovom temom, savetujemo da prvo pročitate lekciju o potprogramima, kao osnovnom konceptu programiranja.

Da bismo koristili funkciju, moramo je deklarisati. Deklaracija obavezno sadrži ključnu reč function. Posle nje se može navesti naziv funkcije, a onda obavezno zagrade unutar kojih se može navesti lista formalnih parametara.

Konačno, obavezno se navode vitičaste zagrade (blok) unutar kojih se može navesti telo funkcije, odnosno njene naredbe. Rezultat se može vratiti korišćenjem direktive return.

function nazivFunkcije(formalni parametri) { ...naredbe unutar funkcije return rezultat; }

Minimalna (i prilično beskorisna) deklaracija funkcije bi bila:

function() {}

Naredbe unutar funkcije se ne izvršavaju dok se funkcija ne pozove. Poziv funkcije se obavlja jednostavno, navođenjem naziva funkcije i obavezno zagrada unutar kojih se može navesti lista stvarnih parametara. Funkcija može biti pozvana unutar izraza ili može predstavljati izraz sam-za-sebe.

nazivFunkcije(stvarni parametri)

Parametri funkcije

Već smo videli da kada se funkcija deklariše, možemo navesti listu parametara. Lista parametara je običan spisak promenljivih (i to bez navođenja iskaza var).

Na primer, ako pravimo funkciju koja treba da sabere dva broja, potrebno je da toj funkciji nekako zadamo ta dva broja. Drugim rečima, opis te funkcije bi mogao da zvuči kao "sabiranje brojeva a i b". To da će funkcija koristiti neke vrednosti a i b koje dolaze iz spoljnog sveta (tačnije iz glavnog programa), određujemo preko parametara.

function zbir(a, b) { var rezultat = a + b; }

Parametri a i b su lokalne promenljive u funkciji (praktično isto kao promenljiva rezultat). Znači da ne smeta ako bilo gde u programu imamo neke druge promenljive a i b.

Kakve god vrednosti da su sadržane u promenljivama a i b u trenutku poziva funkcije, JavaScript će pokušati da ih sabere ili će jednostavno prijaviti grešku.

Kao što znamo, u klasičnom programiranju obično važi da se stvarni i formalni parametri moraju poklopiti po broju, tipu i redosledu (značenju). Ovo su dobra pravila. Ako ih se pridržavamo, naše programerske veštine će napredovati. Međutim, JavaScript dozvoljava da se ne pridržavamo prva dva pravila. To znači da možemo navesti više stvarnih parametara nego što smo predvideli (vrednosti viškova se ignorišu), ili da ih zadamo manje (u funkciji će nedostajući parametri imati vrednost undefined.

Isto tako, pošto JavaScript nije strogo tipiziran jezik, ne postoji način da se programer primora da koristi tačno određene tipove pri pozivu funkcije. Ali to što je ovakva praksa dozvoljena, ne znači i da je poželjna - bar dok ne naučimo dovoljno da možemo da kršimo ova pravila.

Treće pravilo jednostavno ne smemo da prekršimo. U suprotnom bi to prosto značilo da funkciji prosleđujemo netačne parametre i da će ona dati pogrešan rezultat.

Vrednost funkcije

Unutar funkcije se na jednom ili više mesta može navesti naredba return, posle koje se navodi vrednost koja se vraća kao rezultat funkcije. Važno je znati da se, čim se u izvršavanju funkcije naiđe na naredbu return, funkcija prekida i sve ostale naredbe (ako ih ima) budu ignorisane.

function zbir(a, b) { var rezultat = a + b; return rezultat; }

Vrednost funkcije tada koristimo unutar izraza - bilo da je u pitanju najprostija operacija dodele nekoj promenljivoj, bilo da je u pitanju neko složeno izračunavanje.

var p = zbir(a-10, zbir(c*2,b)/2);

Dobra praksa iz klasičnog programiranja nalaže da se return pojavi samo jednom u funkciji, i to na kraju. Naravno, niko nas ne sprečava da navedemo više return direktiva - svaka od njih će biti izlazna tačka funkcije.

Primer

Ovde deklarišemo dve funkcije i pozivamo ih.


  function fun()   // deklaracija funkcije bez parametara
  {
    return x + y;  // vraća rezultat x i y moraju biti globalne promenljive jer ih nema u funkciji
  }
  
  // deklaracija funkcije stepen
  function stepen(osnova, step)  // funkcija ima dva parametra
  {
    var rez = 1;                     // rez dobija početnu vrednost 1
    for (var i=0; i<step; i++) {     // ciklus se "vrti" onoliko puta koliki je step
      rez *= osnova;                 // toliko puta množimo rez sa osnovom
    }
    // tako smo dobili vrednost osnova na stepen step
    return rez;      // vraćamo rez kao rezultat funkcije
  }
  
  var x = 12;
  var y = 8;
  
  fun();                // poziv funkcije - iako funkcija vraća vrednost, mi ništa ne radimo sa njom
  var s = stepen(x, 3); // pozivamo funkciju stepen za dva parametra, a rezultat smeštamo u promenljivu s
  console.log(s);       // ispisujemo vrednost iz promenljive s
		
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies) radi vođenja interne statistike u cilju unapređenja korisničkog iskustva. Tako prikupljeni podaci su anonimni i nedostupni trećim licima. Vaša privatnost nije ugrožena ni na koji način.