Lihtsam, kui avaldused tähendavad alati puhtamat JavaScripti koodi.
Tingimuslikud laused on JavaScripti oluline osa. Need võimaldavad teil koodi käivitada selle põhjal, kas antud tingimus on tõene või väär, ja saate pesastada mitu elseif avaldused (ja an muidu), et hinnata rohkem kui ühte tingimust.
Kuid siin on probleem – keerulise kirjutamise puhul kui...muidu ahelate tõttu võivad asjad kiiresti sassi minna ja teil võib kergesti tekkida kood, mida on raske lugeda ja mõista.
Õpime pikalt ja keerukalt ümber töötama kui...muidu...muidu tinglikud ahelad ülevaatlikumaks, puhtamaks ja hõlpsamini mõistetavamaks versiooniks.
Keerulised kui...muidu Ketid
Kui kirjutate JavaScriptis keerulisi if...else lauseid, on oluline kirjutada puhas, lühike ja arusaadav kood. Näiteks vaadake kui...muidu tingimusahel alloleva funktsiooni sees:
funktsioonisaab juua(inimene) {
kui(isik?.vanus != null) {
kui(inimene.vanus < 18) {
konsool.log("Veel liiga noor")
} muidukui(isik.vanus < 21) {
konsool.log("Mitte USA-s")
} muidu {
konsool.log("Lubatud juua")
}
} muidu {
konsool.log("Sa ei ole inimene")
}
}konst inimene = {
vanus: 22
}
canDrink (inimene)
Loogika on siin lihtne. Esimene kui avaldus tagab, et inimene objektil on vanus vara (muidu pole ta isik). Selle sees kui blokki, olete lisanud kui...muidu...kui kett, mis põhimõtteliselt ütleb:
Kui inimene on alla 18-aastane, on ta joogi saamiseks liiga noor. Kui nad on nooremad kui 21, on nad endiselt alla USA seadusliku joomise vanuse. Vastasel juhul saavad nad legaalselt juua.
Kuigi ülaltoodud kood kehtib, muudab pesastamine koodist arusaamise raskemaks. Õnneks saate koodi muuta kokkuvõtlikuks ja hõlpsamini loetavaks, kasutades a kaitseklausel.
Kaitseklauslid
Iga kord, kui teil on kui lause, mis ümbritseb kogu teie koodi, võite kasutada a kaitseklausel kogu pesakonna eemaldamiseks:
funktsioonisaabJoaParemini() {
kui(isik?.vanus == null) tagasikonsool.log("Sa ei ole inimene")
kui(inimene.vanus < 18) {
konsool.log("Veel liiga noor")
} muidukui(isik.vanus < 21) {
konsool.log("Mitte USA-s")
} muidu {
konsool.log("Lubatud juua")
}
}
Funktsiooni alguses määratlesite kaitseklausli, mis ütleb, et kui see konkreetne tingimus ei ole täidetud, soovite väljuda saab Paremini juua() funktsioon kohe (ja logige konsoolile "Sa ei ole inimene").
Kuid kui tingimus on täidetud, hindate kui...muidu ahel, et näha, milline plokk on kohaldatav. Koodi käivitamine annab sama tulemuse kui esimene näide, kuid seda koodi on lihtsam lugeda.
Ärge kasutage ühekordset tagastamist
Võite väita, et ülaltoodud tehnika pole a hea programmeerimispõhimõte sest me kasutame samas funktsioonis mitut tagastamist ja teie arvates on parem kasutada ainult ühte tagastuslauset (teise nimega ühe tagastamise poliitika).
Kuid see on kohutav viis koodi kirjutamiseks, sest see sunnib teid samadesse hulludesse pesastumisolukordadesse, mida nägime esimeses koodinäidis.
Seda öeldes saate kasutada mitut tagasi avaldused koodi veelgi lihtsustamiseks (ja pesastusest vabanemiseks):
funktsioonisaabJoaParemini() {
kui(isik?.vanus == null) tagasikonsool.log("Sa ei ole inimene")kui(inimene.vanus < 18) {
konsool.log("Veel liiga noor")
tagasi
}kui(inimene.vanus < 21) {
konsool.log("Mitte USA-s")
tagasi
}
konsool.log("Lubatud juua")
}
See kood töötab samamoodi nagu kaks eelmist näidet ja on ka natuke puhtam.
Funktsioonide ekstraktimine puhtama koodi jaoks
Meie viimane koodiplokk oli puhtam kui kaks esimest, kuid see pole ikkagi nii hea, kui võiks.
Selle asemel, et olla pikk kui...muidu ahel ühes funktsioonis, saate luua eraldi funktsiooni saabDrinkResult() mis kontrollib teie eest ja tagastab tulemuse:
funktsioonisaabDrinkResult(vanus) {
kui(vanus < 18) tagasi"Veel liiga noor"
kui(vanus < 21) tagasi"Mitte USA-s"
tagasi"Lubatud juua"
}
Seejärel peate põhifunktsioonis ainult enne telefonile helistamist rakendama kaitseklauslit saabDrinkResult() funktsioon (mille parameetriks on vanus), et saada tulemus:
funktsioonisaabJoaParemini() {
kui(isik?.vanus == null) tagasikonsool.log("Sa ei ole inimene")
lase tulemus = canDrinkResult (person.age)
konsool.log (tulemus)
}
Nii et antud juhul delegeerisite joomise vanuse kontrollimise ülesande eraldi funktsiooniks ja kutsusite seda ainult vajaduse korral. See muudab teie koodi kokkuvõtlikuks ja hõlpsamini kasutatavaks kui kõik eelnevad näited.
Hoidke muul juhul tingimuslikest väidetest eemal
Olete õppinud, kuidas muuta keerukaid pesastatud tingimusahelaid lühemateks ja hõlpsamini loetavateks, kasutades kaitseklausleid ja funktsioonide eraldamise tehnikat.
Püüdke hoida muidu lause oma tingimussõnadest võimalikult eemale, kasutades nii kaitseklausleid kui ka funktsioonide eraldamise tehnikat.
Kui olete JavaScripti kasutamises alles uus kui...muidu avaldus, alustage põhitõdedest.