Promenljive u JavaScriptu
Promenljive su jedan od osnovnih programerskih koncepata. Kao što znamo, promenljiva predstavlja memorijsku lokaciju koja sadrži neku vrednost. Tokom izvršavanja programa ova vrednost se može menjati, pa odatle i naziv "promenljiva".
JavaScript prepoznaje različite tipove podataka, ali nije strogo tipiziran jezik, što znači da jedna ista promenljiva u programu može menjati tip vrednosti koju sadrži. Iako je ovo, zbog načina programiranja u JavaScriptu, ponekad neophodno, ipak bismo preporučili da koliko god je moguće, održavate isti tip promenljive u programu. Tako ćete sigurno smanjiti mogućnost greške.
Naziv promenljve je tzv. "identifikatior" i sastoji se od velikih i malih slova engleske abecede, cifara, donje crte (_) i znaka za dolar ($), s tim što ne sme počinjati cifrom. Identifikator (u novijim verzijama JavaScripta) može sadržati i slova nacionalnih pisama (npr. š,đ,č...), s tim što ovo ipak ne bismo preporučili.
Kao i jezici C, Java, PHP i slični, JavaScript razlikuje velika i mala slova, što znači da se identifikatori broj, Broj i BROJ razlikuju. Vodite računa da ne pogrešite u velikim i malim slovima u nazivima promenljivih, jer će ih JavaScript tumačiti kao različite promenljive - program će raditi pogrešno, a grešku ćemo teško otkriti.
Deklaracija promenljive
JavaScript ne zahteva deklarisanje promenljivih unapred, kao drugi (strogo tipizirani) jezici. Promenljivu uvodimo na onom mestu gde nam je potrebna.
Ipak, deklaracija promenljive postoji u JavaScriptu i vrši se navođenjem iskaza var i liste promenljivih. Unutar deklaracije se može izvršiti i definicija promenljive (dodela vrednosti).
var prom; // deklaracija promenljive
var prom = vrednost; // deklaracija i definicija promenljive
U var iskazu možemo istovremeno deklarisati (i definisati) više promenljivih. Dovoljno je navesti listu promenljivih, odvojenih zarezom.
var p1, p2, p3; // deklaracija liste promenljivih
var p1 = v1, p2 = v2; // deklaracija i definicija liste promenljivih
JavaScript najpre prođe kroz kontekst (funkciju) i "evidentira" sve promenljive koje su deklarisane u njemu, a tek onda izvršava naredbe (u koje spada i operator dodele, odnosno definicija promenljive).
Promenljivu možemo uvesti i bez var iskaza. U tom slučaju, gde god da je promenljiva uvedena, imaće globalnu oblast važenja - biće dostupna u svim funkcijama, kao i van njih. U web aplikacijma, sve globalne promenljive su u stvari svojstva objekta window.
Pročitajte tekst o oblasti važenja, kao i tekst o objektima u JavaScriptu, kako bi vam ovo bilo jasnije.
Nepostojeća ili deklarisana ali nedefinisana promenljiva će imati vrednost undefined.
Promenljive u JavaScriptu mogu sadržati primitivne vrednosti, ali takođe mogu biti i reference na objekte u memoriji. Identifikator (oznaka) promenljive koja sadrži referencu se ni na koji način ne razlikuje od "obične" promenljive - ni po nazivu, ni po deklaraciji.
Primer
Evo jednog primera koji obuhvata skoro sve što bi nam bilo značajno iz prethodnog teksta.
var prom; // deklarisana globalna promenljiva prom
var a, b, c; // deklarisane promenljive a, b i c (isto globalne)
var x = "Nula"; // deklarisana globalna promenljiva x i dodeljena vrednost "Nula"
x = 15; // sada menjamo vrednost promenljive x, ali i njen tip (bila je string, sada je broj)
prom = x * 2; // dodeljujemo vrednost promenljivoj prom
fun(); // izvršavamo funkciju da bi se "dogodile" naredbe unutar nje
prom = p1; // GREŠKA - p1 ne postoji van funkcije
var y = p2; // promenljiva y je deklarisana od početka (uvek se prvo "prođe" kroz sve deklaracije
// ali je definisana (ima vrednost) tek od ove tačke u programu
// dobija vrednost "Tekst" jer je promenljiva p2 globalno važeća
function fun()
{
var a=1, b=2; //
var p1 = x+1; // promenljiva p1 će biti definisana samo unutar funkcije fun
// promenljiva x je globalna i samim tim dostupna u svim funkcijama
p2 = "Tekst"; // promenljiva p2 je uvedena bez iskaza var - biće globalno dostupna
// izbegavajte ovakvu praksu - program će biti mnogo razumljiviji
}