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.

  • 🔘 Syntaksi: if-lauseke suorittaa lohkonsa vain, kun suluissa oleva ehto on tosi.
  • ☑️ Kaksi haaraa: if…else-muoto tarjoaa varalohkon, joka suoritetaan aina, kun ehto on epätosi.
  • ✅ Monet haarat: Ketjuttaminen else if testaa useita ehtoja peräkkäin ja pysähtyy ensimmäiseen osumaan.
  • 🧪 Lyhenne: Kolmioperaattori tiivistää yksinkertaisen if…else-lausekkeen yhdeksi lausekkeeksi, joka palauttaa arvon.
  • 🛠️ Vaihtoehto: Switch-lauseke vertaa yhtä arvoa useisiin kiinteisiin vaihtoehtoihin selkeämmin kuin pitkä ketju.
  • 📊 Sudenkuopat: Virheelliset arvot, harhaileva sijoitusoperaattori ja puuttuvat aaltosulkeet aiheuttavat useimmat ehdolliset virheet.

Ehdolliset lausunnot JavaKäsikirjoitus

JavaKäsikirjoituksen ehdolliset lauseet

Ehdollisia lausekkeita on pääasiassa kolmenlaisia JavaKäsikirjoitus.

  1. jos lausunto: 'if'-lause suorittaa koodin ehdon perusteella.
  2. 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.
  3. 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.

Vuokaavio, joka näyttää JavaSkriptiehto haarautuu tosi- ja epätosi-poluiksi

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 if ketju.

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 "" == 0 on 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, kunnes parseInt() or Number() muuntaa heidät.
  • Saavuttamattomat haarat: vuonna else if ketjussa, aseta kapein ehto ensimmäiseksi, tai laajempi aikaisempi testi voittaa aina.

UKK

Yksi = määrittää arvon ja tekee ehdosta vahingossa totuudenmukaisen. == vertailee tyyppien muuntamisen jälkeen, joten "" == 0 on totta. === vertaa arvoa ja tyyppiä keskenään ja on turvallisempi oletusarvo.

Tekoälyavustajat voivat toistaa tuntemattoman else if ketju selkokielellä, ehdota syötearvoja, jotka johtavat kuhunkin haaraan, ja merkitse ehto, joka ei voi koskaan olla tosi. Suorita koodi aina itse, koska selitys on pikemminkin ehdotus kuin todiste.

Usein kyllä. GitHub Copilot täydentää haarautuvan koodin kommentista tai osittaisesta ehdosta. Tarkista sen valitsemat reuna-arvot, koska luotu > missä tarvitsit >= on helppo ohittaa.

Kielirajoituksia ei ole. Haaran sisällä voi esiintyä mikä tahansa lauseke, mukaan lukien lisälauseke. ifKahden tason jälkeen logiikkaa on vaikea seurata, joten yhdistä testit && tai palata sen sijaan aikaisemmin.

Ei. Ilman aaltosulkeita haara omistaa vain seuraavan yksittäisen lausekkeen, minkä vuoksi yllä olevat esimerkit toimivat. Aaltosulkujen lisääminen on silti suositeltavaa, koska myöhemmin lisätty toinen rivi jää hiljaa haaran ulkopuolelle.

&& on totta vain silloin, kun molemmat osapuolet ovat totta, ja || pätee, kun jompikumpi puoli on. Molemmat oikosuljevat: oikeaa puolta ei koskaan arvioida, kun tulos on jo päätetty.

getHours() palauttaa vierailijan oman kellon nykyisen tunnin numerona 0–23, joten vertailu lukuun 12 jakaa päivän aamuun ja iltapäivään ilman ylimääräistä jäsentämistä.

Ei. JavaSkripti käyttää kahta erillistä avainsanaa, else if, välilyönnin kera. Yksittäinen sana elseif kuuluu PHP:hen ja joihinkin mallinekieliin ja aiheuttaa syntaksivirheen selaimessa.

Tiivistä tämä viesti seuraavasti: