Sie sind auf Seite 1von 11

Poglavlje 1

Uvod u programiranje

Dobro doli u knjigu Nauite JavaScript.


Deo Poetni koraci predstavlja uvod u vie osnovnih koncepata programiranja razu
me se, s posebnim osvrtom na JavaScript (koji emo esto pisati skraeno, JS) i opisu
je kako treba razumeti i pristupiti ostalim delovima knjige. Naroito ako tek poinjete da
uite programiranje i/ili JavaScript, ovaj deo ukratko opisuje ta treba da znate kako bi
ste napravili svoje prve korake.
Knjiga poinje objanjenjima osnovnih principa programiranja na vrlo visokom ni
vou. Prvi deo knjige namenjen je onima koji zapoinju itanje knjige Nauite JavaScript
s malo ili nimalo prethodnog iskustva u programiranju, a knjigu su izabrali kao pomo
na putu ka razumevanju programiranja kroz objektiv JavaScripta.
Poglavlje 1 treba shvatiti kao kratak pregled stvari koje ete morati vie da uite i ve
bate kako biste zaista poeli da programirate. Postoji i mnogo drugih odlinih izvora
uvodnih informacija o programiranju koji vam omoguavaju da dalje obraujete te teme.
Preporuujem da uite i iz njih, a ne samo iz ovog poglavlja.
Kada procenite da ste dovoljno dobro savladali opte osnove programiranja, pogla
vlje 2 e vam pomoi da savladate stil programiranja kakav je uobiajen u JavaScriptu.
Poglavlje 2 vas upoznaje s JavaScriptom, ali ni ono nije sveobuhvatni vodi ekaju vas i
preostali delovi knjige Nauite JavaScript!
Ako ve prilino dobro poznajete JavaScript, prvo pogledajte poglavlje 3 da biste ste
kli optu sliku onoga to moete oekivati od knjige Nauite JavaScript, a zatim poni
te da je itate!

Programski kd
Ponimo od samog poetka.
Program, koji se esto naziva izvorni kd (engl. source code) ili samo kd (engl. code) sa
stoji se od skupa specijalnih naredbi koje nalau raunaru koje poslove treba da obavi. Kd
se najee upisuje u tekstualnu datoteku, mada JavaScript omoguava i da kd kucate di
rektno u prozor razvojne konzole itaa veba, to emo opisati uskoro.

5
Skup pravila za ispravne formate i kombinacije programskih naredbi zove se raunar-
ski (programski) jezik, a ponekad i sintaksa jezika slino govornom jeziku ija pravila
opisuju kako se rei pravilno piu i kako se sastavljaju ispravne reenice pomou rei i
znakova interpunkcije.

Programski iskazi
U programskom jeziku, svaka grupa rei, brojeva i operatora koja obavlja konkretan po
sao zove se iskaz (engl. statement). U JavaScriptu, iskaz moe izgledati ovako:
a = b * 2;
Znaci a i b zovu se promenljive (engl. variables) (videti odeljak Promenljive na stra
ni 15), koje su nalik obinim kutijama za uvanje raznih stvari. U programima, promen
ljive sadre vrednosti (kao to je broj 42) s kojima program radi. Zamislite ih kao simbo
lina mesta rezervisana za uvanje samih vrednosti.
Nasuprot tome, 2 je samo po sebi vrednost, koja se zove literal ili literalna vrednost
(engl. literal value) zato to se pojavljuje samostalno i nije smetena u promenljivu.
Znaci = i * su operatori (videti odeljak Operatori na strani 10) oni izvravaju akci
je s vrednostima i promenljivama, kao to je dodeljivanje vrednosti i matematika operaci
ja mnoenje.
Veina iskaza se u JavaScriptu zavrava znakom taka i zarez (;).
Iskaz a = b * 2; grubo opisano, nalae raunaru da uita tekuu vrednost koja je sme
tena u promenljivoj b, da zatim tu vrednost pomnoi sa 2, a onda da dobijeni rezultat
uskladiti u drugu promenljivu koju emo nazvati a.
Programi su samo kolekcije mnogih takvih iskaza, koji svi zajedno opisuju sve korake
koje treba izvriti da bi program obavio ono za ta je namenjen.

Izrazi
Iskazi se sastoje od jednog ili vie izraza (engl. expressions). Izraz ini svaka referenca na
promenljivu ili vrednost, ili na skup jedne ili vie promenljivih ili literala kombinovanih
pomou operatora.
Na primer, iskaz:
a = b * 2;

sastoji se od etiri izraza:


2 je izraz s literalnom vrednou.
b je izraz s promenljivom, to znai da uitava njenu tekuu vrednost.
b * 2 je primer aritmetikog izraza, to znai da obavlja operaciju mnoenja.
a = b * 2 je izraz za dodeljivanje vrednosti, to znai da rezultat izraza b * 2 dode
ljuje promenljivoj a (vie rei o izrazima bie u nastavku teksta).

6|Poglavlje 1 Uvod u programiranje


Opti izraz koji moe da se navede samostalno zove se iskaz izraza, kao to je sledei:
b * 2;
Ta vrsta iskaza nije mnogo uobiajena ni korisna, jer najee ne bi uopte uticala na
izvravanje programa izraz bi uitao vrednost b i pomnoio je sa 2, ali zatim ne bi nita
uinio s dobijenim rezultatom.
Uobiajeniji iskaz izraza jeste iskaz pozivnog izraza (videti odeljak Funkcije na stra
ni 22) jer se ceo iskaz sastoji od izraza pozivanja funkcije:
alert( a );

Izvravanje programa
Kako te kolekcije programskih iskaza nalau programu ta treba da uradi? Programu je
potrebno izvravanje, to se zove i pokretanje programa.
Iskazi kao to je a = b * 2 korisni su za programere dok ih itaju i piu, ali zapravo
nisu u obliku koji raunar moe direktno da razume. Iz tog razloga, na raunaru se ko
risti specijalna pomona alatka (to moe biti interpreter ili kompajler), koja prevodi kd
koji napiete u komande koje raunar razume.
Za neke raunarske jezike, uobiajeno je da se komande prevode odozgo nadole, red
po red, kad god se program izvrava, to se najee zove interpretiranje koda.
Za druge jezike, prevoenje se obavalja pre pokretanja programa, to se zove kompaj-
liranje (ili prevoenje) koda; znai, kada se program zatim pokrene, izvravaju se ve pre
vedene i spremne naredbe.
Uobiajena tvrdnja je da je JavaScript interpretiran jezik zato to se izvorni JavaScript
kd obrauje pri svakom izvravanju. Ali, to nije sasvim tano. Maina (engl. engine) jezi
ka JavaScript zapravo prvo kompajlira a odmah zatim izvrava kompajliran kd.

Vie informacija o kompajliranju JavaScript koda nai ete u prva dva poglavlja
drugog dela knjige Opseg vidljivosti i ograde.

Pokuajte i sami
U ovom poglavlju, svaki programski koncept uvodi se pomou jednostavnih primera
koda, koji su svi napisani na JavaScriptu (razume se!).
Sledee ne moemo istai dovoljno jako: dok napredujete kroz ovo poglavlje a mo
da e trebati da odvojite vreme kako biste ga preli i vie puta trebalo bi da uvebava
te sva tri opisana koncepta tako to ete svojeruno pisati kd. To ete najjednostavnije
uraditi ako otvorite konzolu s razvojnim alatkama u itau veba koji najradije koristite
(Firefox, Chrome, IE itd.).

Pokuajte i sami | 7
Razvojnu konzolu obino otvarate pomou odgovarajue preice s tastature ili
stavke menija. Vie informacija o otvaranju i upotrebi razvojne konzole u vaem
itau veba nai ete u lanku Upotreba razvojne konzole na adresi http://blog.
teamtreehouse.com/mastering-developer-tools-console.
Da biste u konzolu upisali vie redova istovremeno, pritisnite <shift> + <enter>
kako biste preli u sledei prazan red. im pritisnete samo <enter>, konzola e iz
vriti sve to ste upravo otkucali.

Razmotrimo sada postupak izvravanja koda unutar konzole. Prvo, predlaem da


otvorite novu praznu karticu u svom itau veba. To najradije radim tako to u polje za
adresu upiem about:blank. Zatim, otvorite svoju razvojnu konzolu na nain koji smo
upravo opisali.
Upiite sledei kd i pogledajte kako radi:
a = 21;

b = a * 2;

console.log( b );
Ako prethodni kd upiete u konzolu itaa Chrome, trebalo bi da dobijete neto sli
no sledeem:

Slobodno pokuajte sami. Najbolji nain da nauite programiranje jeste da ponete


da piete kd!

Rezultati izvravanja programa


U prethodnom primeru koda, upotrebili smo naredbu console.log(..). Pogledajmo
ukratko sutinu tog reda koda.
Moda ste ve i sami pogodili, ali to je tano nain na koji ispisujemo tekst (to se zove
i rezultat izvravanja programa namenjen korisniku) na razvojnoj konzoli. Taj iskaz ima
dve karakteristike koje bi trebalo objasniti.
Prvo, deo log( b ) predstavlja pozivanje odreene funkcije (videti odeljak Funkcije
na strani 22). Ono to se tu dogaa jeste da promenljivu b prosleujemo navedenoj funk
ciji, ime od nje zahtevamo da preuzme vrednost b i ispie je na konzoli.

8|Poglavlje 1 Uvod u programiranje


Drugo, deo console. je referenca na odreeni objekat u kojem se nalazi funkcija
log(..). Objekte i njihova svojstva detaljnije razmatramo u poglavlju 2.
Drugi nain da dobijete rezultate koje moete videti na ekranu jeste da izvrite iskaz
alert(..). Na primer:
alert( b );
Ako ga izvrite, zapaziete da umesto da rezultate ispisuje na konzoli, taj iskaz otva
ra iskaui OK prozor sa sadrajem promenljive b. Meutim, kodiranje i izvravanje
programa na konzoli lake ete savladati ako budete koristili iskaz console.log(..) a ne
iskaz alert(..), zato to tako moete da prikazujete vie vrednosti istovremeno bez re
meenja interfejsa itaa veba.
U ovoj knjizi prikazivaemo rezultate programa pomou iskaza console.log(..).

Unoenje ulaznih podataka


Dok razmatramo rezultate programa, moda se pitate i ta je sa ulaznim podacima za pro
grame (na primer, prihvatanjem podataka od korisnika).
Najuobiajeniji nain prijema ulaznih podataka jeste da HTML stranica prikae odre
ene elemente koji se koriste na obrascima (kao to su polja za unoenje teksta) u koje
korisnik moe neto da upie, a zatim se pomou JS te vrednosti uitavaju u promenlji
ve programa.
Postoji i jednostavniji nain da uitate ulazne podatke kada im je jedina svrha uenje i
objanjavanje neega, kao u ovoj knjizi. Iskoristite funkciju prompt(..):
age = prompt( Please tell me your age: );

console.log( age );
Kao to ste moda i sami pretpostavili, sadraj poruke koju prosledite funkciji
prompt(..) u ovom sluaju, Please tell me your age: (molimo vas da navedete svo
je godine) ispisuje se u iskauem prozoru.
Trebalo bi da to bude neto slino ovome:

Pokuajte i sami | 9
Poto pritiskanjem dugmeta OK prosledite programu ulazni tekst, videete da se
vrednost koju ste otkucali smeta u promenljivu age, iji sadraj zatim ispisujemo pomo
u funkcije console.log(..):

Da bismo se bavili samo jednostavnim stvarima dok uimo osnovne koncepte progra
miranja, primeri u ovom odeljku nee zahtevati ulazne podatke. Ali poto ste sada vide
li kako se koristi funkcija prompt(..), ako elite da sebi postavite izazov, moete pokuati
da koristite i ulazne podatke dok prouavate primere.

Operatori
Operatori odreuju akcije koje izvravamo s promenljivama i vrednostima. Ve smo upo
znali dva JavaScript operatora, = i *.
Operator * izvrava matematiko mnoenje. Sasvim jednostavno, zar ne?
Operator jednakosti = koristi se za dodeljivanje vrednosti prvo se izraunava vrednost
na desnoj strani (izvorna vrednost) operatora = a zatim se ona smeta u promenljivu koju
zadamo na levoj strani (ciljna promenljiva).

Ovo moda lii na udan obrnut redosled dodeljivanja vrednosti. Umesto a =


42, neko bi moda radije obrnuo redosled tako da izvorna vrednost bude na le
voj strani a ciljna promenljiva na desnoj, kao u izrazu 42 -> a (ovo nije ispravno
u JavaScriptu!). Naalost, redosled a = 42, kao i sline varijacije, preovlauje u
savremenim programskim jezicima. Ako vam izgleda neprirodan, odvojte malo
vremena i vebajte s njime u mislima da biste se navikli.

Razmotrite sledee:
a = 2;
b = a + 1;
U ovom primeru dodeljujemo vrednost 2 promenljivoj a. Zatim, uitavamo vrednost
promenljive a (koja je i dalje 2), dodajemo joj 1 da bismo dobili rezultujuu vrednost 3,
koju zatim smetamo u promenljivu b.
Mada tehniki gledano to nije operator, rezervisana re var e vam trebati u svakom
programu jer je to primarni nain na koji deklariete (kae se i definiete) promenljive (vi
deti odeljak Promenljive na strani 15).

10|Poglavlje 1 Uvod u programiranje


Trebalo bi da uvek definiete promenljivu po imenu pre nego to je upotrebite. Ali
odreenu promenljivu treba da definiete samo jedanput u svakom opsegu vidljivosti (vi
deti odeljak Opseg vidljivosti promenljivih na strani 23); posle toga je moete koristiti
vie puta, prema potrebi. Na primer:
var a = 20;

a = a + 1;
a = a * 2;
console.log( a ) // 42
Sledi nekoliko najuobiajenijih operatora u JavaScriptu:
Dodeljivanje vrednosti
=, kao u a = 2.
Matematiki
+ (sabiranje), (oduzimanje), * (mnoenje) i / (deljenje), kao u a * 3.
Kombinovani s dodeljivanjem vrednosti
+=, -=, *= i /= sloeni su operatori koji kombinuju odreenu matematiku operaciju
s dodeljivanjem vrednosti, kao u a += 2 (isto to i a = a + 2).
Inkrementiranje/dekrementiranje
++ (inkrementiranje), -- (dekrementiranje), kao u a++ (isto to i a = a + 1).
Pristupanje svojstvu objekta
. kao u console.log().
Objekti su vrednosti koje sadre druge vrednosti na odreenim imenovanim mestima
koja se zovu svojstva (engl. properties). obj.a predstavlja vrednost objektnog tipa koja
se zove obj i ima svojstvo ije je ime a. Drugi oblik pristupanja svojstvima je obj[a].
Videti poglavlje 2.
Jednakost
== (labava jednakost), === (striktna jednakost), != (labava razliitost), !== (striktna
razliitost), kao u a == b.
Videti odeljak Vrednosti i tipovi na strani 12 i poglavlje 2.
Poreenje
< (manje od), > (vee od), <= (manje od ili jednako), >= (vee od ili jednako), kao u
a <= b.
Videti odeljak Vrednosti i tipovi na strani 12 i poglavlje 2.
Logiki
&& (i, konjukcija), || (ili, disjunkcija), kao u a || b koji bira a ili b.
Ovi operatori se koriste za izraavanje kombinovanih uslova (videti odeljak Uslovni
iskazi na strani 18), kao a ili b je istinito.

Operatori|11
Znatno detaljnija objanjenja i opise operatora koji ovde nisu pomenuti nai
ete na veb stranici Mozilla Developer Network (MDN), u odeljku Expressi
ons and Operators.

Vrednosti i tipovi
Ako pitate nekog zaposlenog u prodavnici mobilnih telefona koliko kota odreeni ure
aj, a on vam kae devedeset i devet, devedeset i devet (na primer, 99,99 dolara), on vam
zapravo saoptava novani iznos koji treba da platite (plus dabine) da biste ga kupili.
Ukoliko elite da kupute dva takva telefona, lako moete primeniti mentalnu matemati
ku da biste udvostruili tu vrednost i dobili 199,98 kao osnovnu cenu.
Ukoliko taj isti prodavac odabere neki slian telefon i kae da je besplatan (i moda
pri tome oponaa prstima znakove navoda), on vam ne saoptava nikakav iznos, nego samo
drugaiji oblik predstavljanja oekivane cene ($0,00) a to je re besplatno.
Kada zatim pitate da li uz telefon dobijate i punja, odgovor moe biti samo da ili
ne.
Na vrlo sline naine, kada u programu izraavate odreene vrednosti, birate razliite
oblike predstavljanja tih vrednosti u zavisnosti od toga ta nameravate da radite s njima.
Ti razliiti oblici predstavljanja vrednosti zovu se tipovi (engl. types) u terminologi
ji programiranja. JavaScript ima ugraene tipove za svaku od tzv. primitivnih (osnovnih)
vrednosti:
Kada treba da obavite neku matematiku operaciju, koristite tip number.
Kada treba da ispiete neku vrednost na ekranu, koristite tip string (jedan ili vie
znakova, rei ili reenica).
Kada u programu treba da donesete odreenu odluku, koristite tip boolean (true ili
false).

Vrednosti koje se umeu direktno u izvorni kd zovu se literali. Literali tipa string
piu se izmeu navodnika (...) ili polunavodnika (...) jedina razlika je da li vie
volite jedan ili drugi stil. Literali tipa number i boolean samo se navode takvi kakvi su (na
primer, 42, true itd.).
Razmotrite sledee:
I am a string;
I am also a string;

42;

true;
false;
Osim vrednosti tipa string/number/boolean, uobiajeno je da programski jezici stavlja
ju na raspolaganje i nizove, objekte, funkcije i drugo. O vrednostima i tipovima bie znat
no vie rei dalje u ovom poglavlju, kao i u sledeem.

12|Poglavlje 1 Uvod u programiranje


Konverzije tipova
Ako imate vrednost tipa number (broj) ali treba da je prikaete na ekranu, morate je prvo
pretvoriti u tip string. U JavaScriptu se to pretvaranje zove konverzija tipa (engl. coerci-
on). Slino tome, ako neko upie grupu numerikih znakova na obrazac veb stranice za
e-trgovinu, to je tip string; ukoliko vam zatim zatreba da tu vrednost upotrebite u mate
matikim operacijama, morate je konvertovati u tip number.
JavaScript ima vie mehanizama za bezuslovnu konverziju tipova. Na primer:
var a = 42;

var b = Number( a );

console.log( a ); // 42
console.log( b ); // 42
Prikazana upotreba funkcije Number(..) (ugraena funkcija) predstavlja eksplicit-
nu konverziju proizvoljnog izvornog tipa u tip number. To bi trebalo da je samo po sebi
razumljivo.
Ali, ta se dogaa kada pokuate da poredite dve vrednosti koje izvorno nisu istog
tipa, pa bi bila potrebna implicitna konverzija tipa?
Kada se poredi znakovni niz 99.99 s brojem 99.99, veina ljudi bi se sloila da su te
vrednosti ekvivalentne. Ali one nisu sasvim iste, zar ne? To je ista vrednost predstavlje
na u dva razliita oblika, tj. dva razliita tipa. Moglo bi se rei da su one labavo jedna
ke, zar ne?
Da bi vam olakao reavanje ovakvih uobiajenih situacija, JavaScript se u odree
nim sluajevima sam umea i implicitno pretvara vrednosti u odgovarajue ciljne tipove.
Tako da ako upotrebite operator labave jednakosti == da biste uporedili 99.99 ==
99.99, JavaScript e konvertovati levu stranu 99.99 u njen ekvivalent tipa number, to je
99.99. Poreenje se zatim svodi na 99.99 == 99.99, iji rezultat je, razume se, true.
Uprkos tome to je osmiljena da pomogne, implicitna konverzija tipova moe da vas
zbuni ako niste prethodno odvojili vreme i nauili pravila koja pri tome vae. Poto vei
na JS programera to ne ini, uobiajeno oseanje je da konverzija tipova zbunjuje i uvo
di u programe neoekivane greke, pa bi je zato trebalo izbegavati. Ponekad se ak nazi
va i grekom u dizajnu jezika.
Meutim, implicitna konverzija je mehanizam koji se moe nauiti, tavie, treba da ga
naui svako ko namerava da se ozbiljno bavi programiranjem na JavaScriptu. Ne samo da
vie ne zbunjuje kada savladate njegova pravila, nego moe zapravo i poboljati vae pro
grame! Uloeni trud je vredan rezultata.

Vie informacija o konverziji tipova nai ete u poglavlju 2 ovog dela knjige i u
poglavlju 4 etvrtog dela Tipovi i gramatika.

Vrednosti i tipovi | 13
Komentari u kodu
Prodavac mobilnih telefona moe da napie nekoliko beleaka o odlikama novog mode
la telefona u ponudi ili novim planovima firme za budue ponude. Te napomene su na
menjene samo zaposlenima njih ne treba da itaju kupci. Uprkos tome, te beleke omo
guavaju zaposlenima da lake obavljaju svoje poslove jer je bolje dokumentovano ta i
zbog ega treba da priaju kupcima.
Jedna od najvanijih lekcija koje moete nauiti u vezi s pisanjem koda jeste da on nije
namenjen samo raunaru. Programski kd je u svakom svom deliu namenjen isto toli
ko, ako ne i vie, programeru koliko i kompajleru.
Raunaru je bitan samo mainski kd, to je niz binarnih jedinica i nula, koji se dobija
nakon kompajliranja (prevoenja) izvornog koda. Postoji gotovo beskonaan broj progra
ma koji mogu rezultovati istim nizom nula i jedinica. Odluke koje donosite u vezi s nai
nom na koji piete program imaju svoju teinu ne samo za vas, nego i za druge lanove
razvojnog tima, pa ak i za vas ubudue.
Trebalo bi da piete programe koji ne samo to rade ispravno, nego i izgledaju razumlji
vo kada ih neko prouava. Tome moete mnogo doprineti ako birate dobra imena za pro
menljive (videti odeljak Promenljive na strani 15) i funkcije (videti odeljak Funkcije na
strani 22).
Drugi vaan deo su komentari u kodu. To su kratki tekstovi koji se dodaju u program
iskljuivo kao objanjenja za ljude koji itaju kd (ukljuujui i vas, kao programera). In
terpreter/kompajler uvek zanemaruje te komentare.
Postoje razna miljenja o tome ta ini dobro dokumentovan kd; nije mogue definisa
ti apsolutna i univerzalna pravila. Ipak, pojedine napomene i smernice prilino su korisne:
Programski kd bez komentara nikad nije optimalan.
Previe komentara (na primer, po jedan u svakom redu) verovatno je znak loe napi
sanog koda.
Trebalo bi da komentari objanjavaju zato, a ne ta. Mogu da objanjavaju i kako
ako je ono to je napisano posebno zbunjujue.
U JavaScriptu, mogue su dve vrste komentara: jednoredni i vieredni.
Razmotrite sledee:
// Ovo je jednoredni komentar

/* a ovo je
vieredni
komentar.
*/
Jednoredni komentar (oznaen znakovima //) pogodan je kada nameravate da doda
te komentar neposredno iznad jednog iskaza ili ak na kraj reda. Sve u redu iza znakova
//, do kraja reda, smatra se komentarom (i kompajler ga zato zanemaruje). Nema nika
kvog ogranienja po pitanju toga ta moete napisati u sklopu jednorednog komentara.

14|Poglavlje 1 Uvod u programiranje


Razmotrite sledee:
var a = 42; // 42 je smisao ivota
Vieredni komentar (oznaen znakovima /* .. */) pogodan je ako imate objanjenje
koje zauzima vie redova.
Evo uobiajenog oblika upotrebe vierednih komentara:
/* Koristi se sledea vrednost zato to
je dokazano da ona odgovara na svako
pitanje postavljeno u univerzumu. */
var a = 42;
Vieredni komentar se moe umetnuti na proizvoljno mesto u redu, ak i usred reda,
zato to se zavrava znakovima */. Na primer:
var a = /* proizvoljna vrednost */ 42;

console.log( a ); // 42
Jedini element koji se ne moe pojaviti u vierednom komentaru jeste grupa znakova
*/, zato to bi se to tumailo kao kraj komentara.
Trebalo bi svakako da svoje uenje programiranja ponete navikom da komentarie
te programski kd. Poto ete u celom preostalom delu ovog poglavlja videti da koristim
komentare kako bih objasnio odreene stvari, inite to isto u svom kodu. Verujte mi, bie
vam zahvalan svako ko ita va kd!

Promenljive
U veini programa koji rade neto korisno, potrebno je pratiti odreenu vrednost koja se
menja tokom izvravanja programa jer uestvuje u vie operacija potrebnih za poslove
koje program obavlja.
U svom programu, to ete najlake obezbediti ako tu vrednost dodelite odreenom
simbolikom kontejneru koji se zove promenljiva (engl. variable) zato to se vrednost
u tom kontejneru moe tokom vremena menjati, prema potrebama.
U nekim programskim jezicima, promenljivu (kontejner) deklariete tako da uvek sa
dri samo odreen tip vrednosti recimo, number ili string. Statiko odreivanje tipa, po
znato i kao nametanje tipa, uglavnom se navodi kao prednost kad je re o ispravnosti pro
grama, zato to spreava nenamerne konverzije tipova.
U drugim programskim jezicima, tipovi vrednosti smatraju se vanijim od tipova pro
menljivih. Labavo odreivanje tipa, to je poznato i kao dinamiko odreivanje tipa, omo
guava da jedna promenljiva moe u svakom datom trenutku sadrati vrednost proizvolj
nog tipa. To se uglavnom navodi kao prednost kad je re o fleksibilnosti programa, jer
omoguava da ista promenljiva predstavlja vrednost bez obzira na oblik u kojem se ta
vrednost moe nai u svakom datom trenutku logikog toka programa.
JavaScript koristi ovaj drugi pristup, dinamiko odreivanje tipa, to znai da promen
ljive mogu da sadre vrednosti proizvoljnog tipa, bez ikakvog nametanja tipa.

Promenljive|15