Ehdolliset lausunnot JavaKäsikirjoitus: if, else ja else if
⚡ Älykäs yhteenveto
Ehdolliset lauseet JavaSkripti päättää suoritettavan koodilohkon testaamalla ehtoa, ja if-, if…else- ja if…else if…else -muodot kattavat lähes kaikki haarautumispäätökset, joita aloitteleva skripti koskaan tarvitsee.
JavaKäsikirjoituksen ehdolliset lauseet
Ehdollisia lausekkeita on pääasiassa kolmenlaisia JavaKäsikirjoitus.
- jos lausunto: 'if'-lause suorittaa koodin ehdon perusteella.
- jos…muut Lausunto: if…else-käsky koostuu kahdesta koodilohkosta; kun ehto on tosi, se suorittaa ensimmäisen koodilohkon ja kun ehto on epätosi, se suorittaa toisen koodilohkon.
- jos…muutoin jos…else Lausunto: Kun useita ehtoja on testattava ja eri koodilohkoja on suoritettava sen perusteella, mikä ehto on tosi, käytetään if…else if…else -lausetta.
Kutakin kolmea lomaketta tarkastellaan alla niiden syntaksin ja suoritettavan esimerkin avulla. Samat säännöt pätevät riippumatta siitä, onko komentosarja sivun sisällä tai ulkoisessa tiedostossa, ja onko ehto kirjoitettu ylimmälle tasolle vai sen sisään toiminto.
Ehdollisten lauseiden käyttö
Ehdollisia lauseita käytetään päättämään suorituksen kulusta eri ehtojen perusteella. Jos ehto on tosi, voit suorittaa yhden toiminnon ja jos ehto on epätosi, voit suorittaa toisen toiminnon.
Alla oleva kaavio havainnollistaa tätä ajatusta tienhaarana: yksi ehto arvioidaan kerran, ja ohjaus kulkee joko oikeaa haaraa tai väärää haaraa pitkin, ei koskaan molempia.
Jos lausunto
Syntaksi:
if(condition) { lines of code to be executed if condition is true }
Voit käyttää if lauseketta, jos haluat tarkistaa vain tietyn ehdon. Kun sulkeiden sisällä oleva lauseke evaluoituu arvoksi true, lohko suoritetaan; kun se evaluoituu arvoksi false, tulkki hyppää suoraan sen ohi ja skripti jatkaa seuraavaan lauseeseen.
Kokeile tätä itse:
<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>
Esimerkissä kysytään kävijältä ikää ja testataan sitten arvoa kahdesti: kerran 18-vuotiaille ja sitä vanhemmille, kerran alle 18-vuotiaille. Koska kaksi erillistä if käytetään lauseita sen sijaan, että elsemolemmat ehdot arvioidaan aina, kun sivu latautuu.
Nykyaikainen vastine: Yllä oleva koodi säilytetään täsmälleen julkaistussa muodossaan. Nykyisessä muodossa JavaSaman logiikan omaava skripti kirjoitetaan yleensä let or const sijasta var, kanssa console.log() or textContent sijasta document.write(), ja ilman type="text/javascript" attribuutti, jonka HTML5 tekee valinnaiseksi.
Jos…Muuten-lauseke
Syntaksi:
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 }
Voit käyttää if...else lauseke, jos sinun on tarkistettava yksi ehto ja suoritettava eri koodilohko kullekin tulokselle. Täsmälleen toinen kahdesta lohkosta suoritetaan aina, joten erillistä toista testiä ei tarvita.
Kokeile tätä itse:
<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>
Tässä new Date().getHours() palauttaa selaimen kellon nykyisen tunnin numerona 0–23. Mikä tahansa arvo alle 12 tuottaa aamutervehdyksen, ja kaikki muut arvot kuuluvat else haara.
Jos…Muuten Jos…Muuten lauseke
Syntaksi:
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 }
Voit käyttää if...else if...else lauseke, jos haluat tarkistaa useamman kuin kaksi ehtoa. Ehdot arvioidaan ylhäältä alas, suoritus pysähtyy ensimmäisen tosi ehdon kohdalla ja viimeinen else toimii yleislakkona, kun mikään niistä ei sovi yhteen.
Kokeile tätä itse:
<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>
Huomaa kaksi puhelua, jotka parseInt(). Arvot, jotka palauttaa prompt() ovat merkkijonoja, joten niiden vertaaminen ilman muuntoa vertaisi tekstiä numeroiden sijaan ja raportoisi arvon ”9” suurempana kuin arvon ”10”.
Kolmiosainen Operator: Lyhenne sanalle jos…muuten
Kun if...else lohko valitsee vain kahden arvon välillä, ehdollinen (kolmiarvoinen) operaattori ilmaisee saman päätöksen kuin yksittäinen lauseke. Se on se yksi JavaSkriptioperaattori, joka ottaa vastaan kolme operandia: ehdon, kysymysmerkin, ehdon ollessa totta käytettävän arvon, kaksoispisteen ja ehdon ollessa epätosi käytettävän arvon.
// 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";
Käytä kolmioperaattoria silloin, kun se parantaa luettavuutta, ei vain rivien säästämiseen:
- Hyvä istuvuus: valitsemalla yhden kahdesta arvosta, jotka määritetään, palautetaan tai pudotetaan mallimerkkijonoon.
- Huono istuvuus: haarat, jotka suorittavat useita lauseita, kutsuvat funktioita niiden sivuvaikutusten vuoksi tai tarvitsevat omat paikalliset muuttujat.
- Vältä pesimistä: kolmiosainen kolmiosainen on paljon vaikeampi lukea kuin
else ifketju.
switch-lauseke vs. if…else if…else
Pitkä else if ketju, joka vertaa samaa muuttujaa jatkuvasti eri kiinteisiin arvoihin, on yleensä selkeämpi kuin switch lauseke. Kytkin laskee lausekkeensa kerran ja hyppää sitten vastaavaan case; break estää suorituksen siirtymisen seuraavaan tapaukseen, ja default näyttelee finaalin roolia else.
switch (day) { case "Sat": case "Sun": document.write("Weekend"); break; default: document.write("Weekday"); }
Nämä kaksi rakennetta eivät ole keskenään vaihdettavissa kaikissa tilanteissa:
| Vertailupiste | jos…muuten jos…muuten | kytkin |
|---|---|---|
| Testin tyyppi | Mikä tahansa totuusarvoinen lauseke, mukaan lukien alueet, kuten hours<12 |
Tasa-arvo vain kiinteitä arvoja vastaan |
| Käytetty vertailu | Minkä tahansa operaattorin kirjoitatkin | Tiukka vertailu, joten "5" ei täsmää 5 |
| luettavuus | Paras muutamiin toisiinsa liittymättömiin sairauksiin | Paras yhden muuttujan useille arvoille |
| Yleinen vika | Jäljelle jäämisen unohtaminen else |
unohtamista break, mikä antaa suorituksen epäonnistua |
Totuudenmukaiset ja valheelliset arvot JavaSkriptiehdot
Ehdon ei tarvitse olla vertailukohta. JavaSkripti muuntaa sulkeiden sisältä löytämänsä ensin totuusarvoksi, minkä vuoksi if (name) on kelvollinen koodi. Vain kuusi arvoa muunnetaan tilaan false: false, 0, tyhjä merkkijono, null, undefinedja NaNKaikki muu on totta, myös jousi "0", tyhjä taulukko ja tyhjä objekti.
Useimmat ehdolliset virheet aloittelijoiden skripteissä johtuvat lyhyestä virheluettelosta:
- Tehtävä vertailun sijaan:
if (x = 5)määrää ja on aina totuudenmukainen;if (x === 5)vertaa. - Löyhä tasa-arvo yllättää:
==muuntaa tyypit ennen vertailua, joten"" == 0on totta. Mieluummin===. - Puuttuvat hammasraudat: ilman
{}vain seuraava yksittäinen lauseke kuuluu haaraan, täsmälleen kuten yllä olevissa esimerkeissä. - Muuntamaton syöte: arvot alkaen
prompt()ja lomakekentät ovat merkkijonoja, kunnesparseInt()orNumber()muuntaa heidät. - Saavuttamattomat haarat: vuonna
else ifketjussa, aseta kapein ehto ensimmäiseksi, tai laajempi aikaisempi testi voittaa aina.

