V mnogo programih JavaSCript se moramo odločiti med več možnostmi, oziroma izvršiti določene stavke samo, če je izpolnjen nek pogoj. Take odločitvene probleme rešujemo z:
Pogojni izraz
Pogojni izraz je edini izraz v JavaSCript, ki ima tri operande. Je krašji zapis pogojnega stavka if
. Prvi je pogoj, druga dva pa sta poljubna izraza. Vrednost pogojnega izraza je odvisna od pogoja. Če je izpolnjen in je njegova vrednost true
, dobi izraz vrednost drugega, sicer pa vrednost tretjega operanda.
imeSpremenljivke = (pogoj) ? izraz1 : izraz2;
Če ima pogoj vrednost true
, dobi pogojni izraz vrednost izraza izraz1
, sicer pa vrednost izraza izraz2
. Pogoj običajno napišemo v navadnih oklepajih. Izraza izraz1
in izraz2
sta lahko različnega tipa.
Oglejmo si primer, kjer imata spremenljivki x
in y
poljubno vrednost. V spremenljivko min
zapišemo manjšo, v spremenljivko max
pa večjo od njunih vrednosti. V spremenljivko abs
izračunamo še absolutno vrednost spremenljivke y
.
var x = 10;
var y = -5;
var min = (x < y) ? x : y; // -5
var max = (x > y) ? x : y; // 10
var abs = (y < 0) ? -y : y; // 5
Oglejmo si še drugi primer, v katerem želimo datume izpisati z vodilnimi ničlami (npr. 07.02.2015):
<p id="primer"></p>
<script>
var dan = 7, mesec = 2, leto = 2015;
var izpis = ("Datum: " + ((dan < 10) ? 0 : "") + dan + "." +
((mesec < 10) ? 0 : "") + mesec + "." + leto);
document.getElementBayId("primer").innerHTML = izpis;
</script>
Pogojni stavki
Pogojni stavek uporabimo, kadar želimo izvesti določen stavek samo v primeru, ko je izpolnjen nek pogoj.
if
Pogojni stavek zapišemo z besedo if
, ki ji sledi pogoj zapisan v oklepajih (izraz z vrednostjo true
ali false
), temu pa stavek, ki ga želimo izvesti, če je pogoj izpolnjen (če ima vrednost true
):
if (pogoj) stavek1;
Če je pogoj izpolnjen, lahko izvedemo tudi več stavkov. V tem primeru stavke postavimo med zavite oklepaje:
if (pogoj) {
stavek1
stavek2
...
}
<p id="primer"></p>
<script>
var starost = 20;
if( starost > 18 ){
document.getElementById("primer").innerHTML = "Si polnoleten, lahko opravljaš vozniški izpit.";
}
</script>
else
V primeru, ko pogoj ni izpolnjen (ko ima vrednost false
) lahko izvedemo tudi drug stavek tako, da na koncu (običajno v novi vrsti) napišemo besedo else
ter stavek, ki ga želimo izvesti.
if (pogoj) stavek1
else stavek2;
Seveda pa lahko, tudi če pogoj ni izpolnjen, izvedemo več stavkov tako, da jih vstavimo v zavite oklepaje:
if (pogoj) {
stavek1
stavek2
...
}
else {
stavek1
stavek2
...
}
<p id="primer"></p>
<script>
var starost = 15;
if( starost > 18 ){
document.getElementById("primer").innerHTML = "Si polnoleten, lahko opravljaš vozniški izpit.";
}
else {
document.getElementById("primer").innerHTML = "Premlad si, vozniškega izpita še ne moreš opravljati.";
}
</script>
else if
S pogojnim stavkom tok programa preusmerimo na eno od dveh možnih poti. Kadar pa imamo na izbiro več možnosti, moramo uporabiti več pogojnih stavkov:
if (pogoj) stavek1
else if (pogoj) stavek2
else if (pogoj) stavek3
...
else stavekN;
Oglejmo si primer, kjer bomo število preverili, če je večje od 10, zatem pa še ali je sodo ali liho:
<p id="primer"></p>
<script>
var stevilo = 15;
if( stevilo > 10 ){
if (stevilo % 2 == 0)
document.getElementById("primer").innerHTML = "Sodo število večje od 10.";
else
document.getElementById("primer").innerHTML = "Liho število večje od 10.";
}
else {
if (stevilo % 2 == 0)
document.getElementById("primer").innerHTML = "Sodo število manjše od 10.";
else
document.getElementById("primer").innerHTML = "Liho število manjše od 10.";
}
</script>
switch
Namesto kombinacije zaporednih pogojnih stavkov if
uporabimo lahko stavek switch
. To lahko storimo takrat, ko se je potrebno odločiti med več možnostmi samo na podlagi različnih vrednosti nekega izraza. Stavek switch
zapišemo takole:
switch (izraz) {
case vrednost1: stavek1
break;
case vrednost2: stavek2
break;
...
case vrednostN: stavekN
break;
default: stavek;
}
Program izračuna vrednost izraza izraz
ter poišče stavek case
s to vrednostjo. Vrednosti, ki sledijo besedi case
, morajo biti konstante. Če program najde ustrezen stavek case
, izvrši vse stavke, ki sledijo, razen če prej ne naleti na stavek break
, ki povzroči skok iz stavka switch
. Če stavka case
z ustrezno vrednostjo ni, izvrši vse stavke, ki sledijo besedi default
.
Zadnji del stavka switch
(tistega, ki se prične z možnostjo default
) lahko tudi izpustimo. Če program ne bo našel ustrezne možnosti case
, ne bo storil ničesar. Če na koncu katere od možnosti case
izpustimo stavek break
, se bo program nadaljeval s stavki, ki pripadajo naslednji možnosti.
Oglejmo si primer, kjer bomo v spremenljivko vnesli število od 1 do 7, program pa bo izpisal ime dneva:
<p id="primer"></p>
<script>
var dan = 5;
switch (dan) {
case 1:
dan = "ponedeljek";
break;
case 2:
dan = "torek";
break;
case 3:
dan = "sreda";
break;
case 4:
dan = "četrtek";
break;
case 5:
dan = "petek";
break;
case 6:
dan = "sobota";
break;
case 7:
dan = "nedelja";
break;
default:
dan = "Napačen vnos!";
}
document.getElementById("primer").innerHTML = dan;
</script>