Egyszerűbb, ha az utasítások mindig tisztább JavaScript-kódot jelentenek.

A feltételes utasítások a JavaScript lényeges részét képezik. Lehetővé teszik kód végrehajtását az alapján, hogy egy adott feltétel igaz-e vagy hamis, és több egymásba ágyazható elseif nyilatkozatok (és egy más) több feltétel értékeléséhez.

De itt van a probléma – összetett írásnál ha más láncok, a dolgok gyorsan összezavarodhatnak, és könnyen olyan kódot kaphat, amelyet nehéz olvasni és megérteni.

Tanuljuk meg a hosszú és összetett refaktorálást ha...elseif...else feltételes láncokat tömörebb, tisztább és könnyebben érthető változatba.

Komplex, ha...egyéb Láncok

Ha összetett if...else utasításokat ír JavaScriptben, elengedhetetlen, hogy írjon tiszta, tömör és érthető kód. Például vessen egy pillantást a ha más feltételes lánc az alábbi függvényen belül:

funkciótud Inni(személy) {
ha(személy?.életkor != nulla) {
ha(személy.kor < 18) {
konzol.log("Még túl fiatal")
} másha(személy.életkor < 21) {
konzol.log("Nem az USA-ban"
instagram viewer
)
} más {
konzol.log("Inni szabad")
}
} más {
konzol.log("Te nem vagy ember")
}
}

const személy = {
életkor: 22
}

canDrink (személy)

A logika itt egyszerű. Az első ha nyilatkozat biztosítja, hogy a személy az objektumnak van egy kor tulajdon (egyébként ő nem személy). Azon belül ha blokk, hozzáadtál egy ha...egyéb...ha lánc, amely alapvetően ezt mondja:

Ha a személy 18 évnél fiatalabb, túl fiatal ahhoz, hogy inni tudjon. Ha 21 évnél fiatalabbak, még mindig nem érik el az Egyesült Államokban megengedett alkoholfogyasztási korhatárt. Ellenkező esetben legálisan juthatnak italhoz.

Bár a fenti kód érvényes, a beágyazás megnehezíti a kód megértését. Szerencsére a kódot tömörebbé és könnyebben olvashatóvá alakíthatja át az a használatával őrzáradék.

Őrzáradékok

Bármikor van egy ha utasítást, amely becsomagolja az összes kódot, használhatja a őrzáradék az összes beágyazás eltávolításához:

funkciótudjobbat inni() {
ha(személy?.életkor == nulla) Visszatéréskonzol.log("Te nem vagy ember")

ha(személy.kor < 18) {
konzol.log("Még túl fiatal")
} másha(személy.életkor < 21) {
konzol.log("Nem az USA-ban")
} más {
konzol.log("Inni szabad")
}
}

A függvény elején definiált egy védőzáradékot, amely kimondja, hogy ha az adott feltétel nem teljesül, ki kell lépni a tud jobbat inni() azonnali funkciót (és a konzolon jelölje be a „Te nem vagy személy”).

De ha a feltétel teljesül, akkor értékeli a ha más láncot, hogy megtudja, melyik blokk alkalmazható. A kód futtatása ugyanazt az eredményt adja, mint az első példa, de ez a kód könnyebben olvasható.

Ne használjon egyszeri visszaküldést

Vitatkozhat azzal, hogy a fenti technika nem a jó programozási elv mert több visszatérést használunk ugyanabban a függvényben, és Ön úgy gondolja, hogy jobb, ha csak egy return utasítás van (más néven egyetlen visszatérési irányelv).

De ez egy szörnyű módja a kódírásnak, mert ugyanazokba az őrült beágyazási helyzetekbe kényszeríti, amelyeket az első kódmintában láttunk.

Ezzel több is használható Visszatérés utasítások a kód további egyszerűsítésére (és a beágyazás megszüntetésére):

funkciótudjobbat inni() {
ha(személy?.életkor == nulla) Visszatéréskonzol.log("Te nem vagy ember")

ha(személy.kor < 18) {
konzol.log("Még túl fiatal")
Visszatérés
}

ha(személy.kor < 21) {
konzol.log("Nem az USA-ban")
Visszatérés
}

konzol.log("Inni szabad")
}

Ez a kód ugyanúgy működik, mint az előző két példa, és egy kicsit tisztább is.

Funkciók kibontása a Cleaner kódhoz

Az utolsó kódblokkunk tisztább volt, mint az első kettő, de még mindig nem olyan jó, mint lehetne.

Ahelyett, hogy hosszú ha más lánc egy függvényen belül, létrehozhat egy külön függvényt canDrinkResult() amely elvégzi az ellenőrzést Ön helyett, és visszaadja az eredményt:

funkciócanDrinkResult(kor) {
ha(életkor < 18) Visszatérés"Még túl fiatal"
ha(életkor < 21) Visszatérés"Nem az USA-ban"
Visszatérés"Inni szabad"
}

Ezután a fő funkción belül mindössze annyit kell tennie, hogy először alkalmazza a védőzáradékot, mielőtt meghívná a canDrinkResult() függvény (paraméterként az életkorral), hogy megkapjuk az eredményt:

funkciótudjobbat inni() { 
ha(személy?.életkor == nulla) Visszatéréskonzol.log("Te nem vagy ember")

hagyja eredmény = canDrinkResult (person.age)
konzol.log (eredmény)
}

Tehát ebben az esetben az ivási életkor ellenőrzésének feladatát külön funkcióra ruházta át, és csak szükség esetén hívta meg. Ezáltal a kód tömörebbé és egyszerűbbé válik, mint az összes korábbi példával.

Tartsa távol a feltételes nyilatkozatoktól

Megtanulta, hogyan lehet összetett, egymásba ágyazott feltételes láncokat rövidebb, könnyebben olvasható láncokká alakítani a védőzáradékok és a függvénykivonási technika segítségével.

Próbáld megtartani a más amennyire csak lehetséges, távolítsa el az utasítást a feltételes feltételektől a védőzáradékok és a függvénykivonási technika használatával.

Ha még kezdő a JavaScript használatában ha más kijelentést, kezdje az alapokkal.