Uvjetne izjave u JavaSkripta: if, else i else if
⚡ Pametni sažetak
Uvjetne izjave u JavaSkripta odlučuje koji se blok koda izvršava testiranjem uvjeta, a if, if…else i if…else if…else obrasci pokrivaju gotovo svaku odluku o grananju koja će početničkom skriptu ikada trebati.

JavaUvjetne izjave skripte
Uglavnom postoje tri vrste uvjetnih iskaza JavaScript.
- if Izjava: Izjava 'if' izvršava kod na temelju uvjeta.
- if…else Izjava: naredba if…else sastoji se od dva bloka koda; kada je uvjet istinit, izvršava prvi blok koda, a kada je uvjet lažan, izvršava drugi blok koda.
- if… else if… else Izjava: Kada je potrebno testirati više uvjeta i izvršiti različite blokove koda na temelju toga koji je uvjet istinit, koristi se naredba if…else if…else.
Svaki od tri oblika ispituje se u nastavku sa svojom sintaksom i primjerom koji se može pokrenuti. Ista pravila vrijede bez obzira nalazi li se skripta unutar stranice ili u vanjskoj datotecii je li uvjet napisan na najvišoj razini ili unutar funkcija.
Kako koristiti uvjetne izjave
Uvjetne naredbe koriste se za određivanje tijeka izvršenja na temelju različitih uvjeta. Ako je uvjet istinit, možete izvršiti jednu radnju, a ako je uvjet lažan, možete izvršiti drugu radnju.
Donji dijagram prikazuje tu ideju kao račvanje: jedan uvjet se procjenjuje jednom, a kontrola putuje niz pravu granu ili lažnu granu, nikada obje.
Ako Izjava
Sintaksa:
if(condition) { lines of code to be executed if condition is true }
Možete koristiti if naredbu ako želite provjeriti samo određeni uvjet. Kada se izraz unutar zagrada evaluira kao true, blok se izvršava; kada se evaluira kao false, interpreter ga odmah preskače i skripta nastavlja sa sljedećom naredbom.
Pokušajte ovo sami:
<html>
<head>
<title>IF Statments!!!</title>
<script type="text/javascript">
var age = prompt("Please enter your age");
if(age>=18)
document.write("You are an adult <br />");
if(age<18)
document.write("You are NOT an adult <br />");
</script>
</head>
<body>
</body>
</html>
U primjeru se od posjetitelja traži dob, a zatim se ta vrijednost provjerava dva puta: jednom za 18 i više godina, jednom za mlađe od 18 godina. Budući da su dva odvojena if koriste se izjave umjesto else, oba uvjeta se procjenjuju svaki put kada se stranica učitava.
Moderni ekvivalent: Gornji kod je sačuvan točno onako kako je objavljen. U trenutnom JavaSkripta s kojom se obično piše ista logika let or const umjesto var, jer je oznaka console.log() or textContent umjesto document.write(), i bez type="text/javascript" atribut, koji HTML5 čini opcionalnim.
Naredba If…Else
Sintaksa:
if(condition) { lines of code to be executed if the condition is true } else { lines of code to be executed if the condition is false }
Možete koristiti if...else naredbu ako morate provjeriti jedan uvjet i izvršiti drugi blok koda za svaki ishod. Uvijek se izvršava točno jedan od dva bloka, tako da nije potreban zaseban drugi test.
Pokušajte ovo sami:
<html>
<head>
<title>If...Else Statments!!!</title>
<script type="text/javascript">
// Get the current hours
var hours = new Date().getHours();
if(hours<12)
document.write("Good Morning!!!<br />");
else
document.write("Good Afternoon!!!<br />");
</script>
</head>
<body>
</body>
</html>
Ovdje new Date().getHours() vraća trenutni sat preglednika kao broj od 0 do 23. Bilo koja vrijednost ispod 12 generira jutarnji pozdrav, a svaka ostala vrijednost pada na else podružnica.
Ako…Inače Ako…Inače naredba
Sintaksa:
if(condition1) { lines of code to be executed if condition1 is true } else if(condition2) { lines of code to be executed if condition2 is true } else { lines of code to be executed if condition1 is false and condition2 is false }
Možete koristiti if...else if...else naredbu ako želite provjeriti više od dva uvjeta. Uvjeti se procjenjuju od vrha prema dnu, izvršavanje se zaustavlja na prvom koji je istinit, a na posljednjem else djeluje kao univerzalni skup kada se nijedan od njih ne podudara.
Pokušajte ovo sami:
<html>
<head>
<script type="text/javascript">
var one = prompt("Enter the first number");
var two = prompt("Enter the second number");
one = parseInt(one);
two = parseInt(two);
if (one == two)
document.write(one + " is equal to " + two + ".");
else if (one<two)
document.write(one + " is less than " + two + ".");
else
document.write(one + " is greater than " + two + ".");
</script>
</head>
<body>
</body>
</html>
Zapazite dva poziva na parseInt()Vrijednosti koje vraća prompt() su nizovi znakova, pa bi njihova usporedba bez pretvorbe usporedila tekst, a ne brojeve, te bi "9" bila veća od "10".
Trostruki Operator: Skraćenica za if…else
Kada if...else blok bira samo između dvije vrijednosti, uvjetni (ternarni) operator izražava istu odluku kao jedan izraz. To je onaj JavaSkriptni operator koji prima tri operanda: uvjet, upitnik, vrijednost koja se koristi kada je uvjet istinit, dvotočku i vrijednost koja se koristi kada je uvjet lažan.
// if...else form let message; if (age >= 18) { message = "adult"; } else { message = "minor"; } // same decision as a ternary expression let label = age >= 18 ? "adult" : "minor";
Koristite ternarni operator kada poboljšava čitljivost, ne samo za uštedu redaka:
- Dobro pristaje: odabir jedne od dvije vrijednosti za dodjeljivanje, vraćanje ili ubacivanje u predložak niza.
- Loše pristajanje: grane koje izvršavaju nekoliko naredbi, pozivaju funkcije za njihove nuspojave ili trebaju vlastite lokalne varijable.
- Izbjegavajte gniježđenje: Ternar unutar ternarnog je puno teže pročitati nego
else iflanac.
switch naredba u odnosu na if…else if…else
Dugo else if lanac koji stalno uspoređuje istu varijablu s različitim fiksnim vrijednostima obično je jasniji kao switch naredbu. Prekidač jednom evaluira svoj izraz, a zatim skače na odgovarajući case; break sprječava prelazak izvršenja u sljedeći slučaj i default igra ulogu finala else.
switch (day) { case "Sat": case "Sun": document.write("Weekend"); break; default: document.write("Weekday"); }
Dvije strukture nisu zamjenjive u svakoj situaciji:
| Točka usporedbe | ako…inače ako…inače | prebaciti |
|---|---|---|
| Vrsta testa | Bilo koji logički izraz, uključujući raspone kao što su hours<12 |
Jednakost samo protiv fiksnih vrijednosti |
| Korištena usporedba | Koji god operator napišete | Stroga usporedba, dakle "5" ne odgovara 5 |
| čitljivost | Najbolje za nekoliko nepovezanih stanja | Najbolje za više vrijednosti jedne varijable |
| Uobičajena greška | Zaboravljajući na trag else |
zaboravljanje break, što omogućuje da izvršenje propadne |
Istinite i lažne vrijednosti u JavaUvjeti skripte
Uvjet ne mora biti usporedba. JavaSkripta prvo pretvara sve što pronađe unutar zagrada u logičku vrijednost, zbog čega if (name) je valjan kod. Samo šest vrijednosti pretvara se u lažno: false, 0, prazan niz, null, undefinedi NaNSve ostalo je istinito, uključujući i niz znakova. "0", prazan niz i prazan objekt.
Većina uvjetnih grešaka u početničkim skriptama dolazi iz kratkog popisa grešaka:
- Dodjeljivanje umjesto usporedbe:
if (x = 5)dodjeljuje i uvijek je istinit;if (x === 5)uspoređuje. - Iznenađenja u vezi s labavom jednakošću:
==pretvara tipove prije usporedbe, dakle"" == 0je istina. Preferiram===. - Nedostaju aparatići za zube: bez
{}samo sljedeća pojedinačna naredba pripada grani, točno kao u gornjim primjerima. - Nekonvertirani ulaz: vrijednosti iz
prompt()a polja obrasca su nizovi znakova sve dokparseInt()orNumber()pretvara ih. - Nedostupne grane: u
else iflanac, prvo stavite najuži uvjet ili će širi, raniji test uvijek pobijediti.

