Bevezetés
A feltételes utasítások az egyik legfontosabb vezérlési szerkezetet jelentik minden programozási nyelvben. Arra használjuk őket, hogy meghatározzuk a végrehajtás viselkedését valamilyen feltétel alapján. A Javascript nyelvben a feltételes blokkok a if, else if, else, valamint a switch utasítások használatával építhetők fel.
A switch utasítás könnyen olvashatóvá teszi a vezérlési folyamatot azáltal, hogy döntést hoz a kifejezés néhány lehetséges kimenetelével szemben. A megfelelő esettől függően egy vagy több kódblokk is végrehajtható. A switch vezérlés hasonló az else if utasításhoz. Azonban a switch szintaktikailag olvashatóbb. Ideális olyan forgatókönyvekhez is, amelyekben több lehetséges kimenetel van.
Ebben az útmutatóban a Javascript switch utasítására fogunk összpontosítani, és implementáljuk azt összetett vezérlési szerkezetek felépítéséhez. Megtanuljuk azt is, hogyan használjuk a break , case, és default utasításokat a switch blokkon belül a vezérlés menetének irányítására.
A Switch utasítás használata
A switch utasítás úgy működik, hogy összehasonlítja egy változó értékét a lehetséges kifejezésekkel. Ezután végrehajtja a kimenetelnek megfelelő kódblokkot. A switch utasítás szintaxisa nem különbözik az if utasítástól. Röviden, a switch utasítás szintaxisa a következőképpen írható fel:
|
1 2 |
switch() { } |
Alább látható egy példa a switch utasításra. Két esettel vagy két lehetséges kimenetellel rendelkezik, valamint egy alapértelmezett opcióval, amelyet a default kulcsszó határoz meg. Ez az alapértelmezett opció akkor hajtódik végre, amikor a végrehajtás befejeződik, vagy ha nem található egyező eset:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (expression) { case x: // végrehajtja ezt a kódblokkot, ha a kifejezés megegyezik az x esettel break; case y: // végrehajtja ezt a kódblokkot, ha a kifejezés megegyezik az y esettel break; default: // alapértelmezett blokk } |
A fenti kód a következőképpen hajtódik végre:
-
Először a kifejezés kiértékelése történik meg.
-
Ezután a kifejezés eredményét összevetjük a case x esettel. Ha az érték megegyezik, a case x alatti kódblokk hajtódik végre.
-
Ha a kifejezés nem egyezik meg a case x esettel, akkor a case y esettel történik az összevetés. Ha egyezés található, akkor a case y kód hajtódik végre.
-
Végül, ha sem a case x eset, sem a case y eset nem egyezik, akkor a default kód hajtódik végre, és a vezérlés kilép a switch blokkból.
Működő példa
A switch utasítás megértéséhez nézzünk meg egy működő példát. Lekérjük az aktuális dátumhoz tartozó hét napjának értékét a getDay() metódusával a Javascript Date objektumából. Ez az érték egy szám, a vasárnaphoz, egészen 6-ig, ami a szombat. Kiértékeljük az értékek alapján, hogy a hét melyik napjáról van szó:
|
1 |
const day = new Date().getDay(); |
Ezután átadjuk ezt az értéket a switch utasításnak. A switch utasítás fentről lefelé haladva összeveti azt az esetekkel, hogy meghatározza, a hét melyik napjáról van szó. Ha megtalálta az esetet, a break parancs leállítja a switch blokkot, megakadályozva a további utasítások kiértékelését:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// Állítsuk be a hét aktuális napját egy változóba, ahol a 0 a vasárnap és a 6 a szombat const day = new Date().getDay(); switch (day) { case 0: console.log("Vasárnap van"); break; case 1: console.log("Hétfő van!"); break; case 2: console.log("Kedd van."); break; case 3: console.log("Már szerda van!"); break; case 4: console.log("Csütörtök van"); break; case 5: console.log("Boldog pénteket!"); break; case 6: console.log("Szombat van!"); break; default: console.log("Nincs egyező eset") } |
A getDate() metódus által visszaadott értéktől függően az érték egyenként kerül tesztelésre az esetekkel szemben, fentről lefelé haladva. A kimenet attól függően változik, hogy melyik napon futtatta a kódot. Az alapértelmezett (default) kódblokk azért van elhelyezve, hogy kezelni tudjuk azt a forgatókönyvet, ha egyik eset sem egyezik. Ebben a kódban azonban a default soha nem fog meghívódni, mivel a hét napjainak száma véges.
A break utasítás biztosítja, hogy miután az eset egyezett, ne keressen további egyezéseket, és a vezérlés kilépjen a switch utasításból. Ez hatékonyabbá és gyorsabbá teszi a programot.
Tartományok tesztelése a Switch-ben
Eddig nagyon egyszerű használati eseteket láttunk. Azonban előfordulhatnak olyan helyzetek, amikor egyetlen érték helyett egy értéktartományt kell tesztelni. Ezt úgy tehetjük meg, hogy a kifejezésünket true értékre állítjuk, és elvégzünk egy műveletet minden egyes case utasításon belül.
Szemléltessük ezt a használati esetet egy példa segítségével. Vegyünk egy számot, majd alakítsuk át osztályzattá az alábbi kategorizálás alapján:
-
A 90-es vagy annál magasabb osztályzat értéke A
-
A 80 és 89 közötti osztályzat értéke B
-
A 70 és 79 közötti osztályzat értéke C
-
A 60 és 69 közötti osztályzat értéke D
-
Az 59-es vagy annál alacsonyabb osztályzat értéke F
Ezeket az utasításokat switch utasításokként fogjuk megírni. Alább látható az ehhez tartozó kód:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// Diák osztályzata const grade = 87; switch (true) { // Ha a pontszám 90 vagy nagyobb case grade >= 90: console.log("A"); break; // Ha a pontszám 80 vagy nagyobb case grade >= 80: console.log("B"); break; // Ha a pontszám 70 vagy nagyobb case grade >= 70: console.log("C"); break; // Ha a pontszám 60 vagy nagyobb case grade >= 60: console.log("D"); break; // Bármi, ami 59 vagy kevesebb, bukás default: console.log("F"); } |
A fenti kódpéldákkal ellentétben itt a zárójelben lévő kifejezést a következőre állítottuk be: true. Ezért amelyik case utasítás megegyezik a true értékkel, az fog lefutni. Csakúgy, mint az else if utasítás esetében, az első olyan utasítás fog lefutni, amely megegyezik a megadott értékkel. Itt a kimenet a következő lesz: B, annak ellenére, hogy még a C és a D is megegyezik a kifejezéssel.
Többszörös esetek
Ha egynél több esethez szeretné ugyanazt a kódblokkot használni, az is lehetséges. Ez hasonlít az vagy feltételhez az if utasításban. Ilyen esetekben egynél több esetet is megadhatunk minden egyes kódblokkhoz.
E koncepció szemléltetésére egy példát mutatunk be az év hónapjaival. Ezeket a hónapokat az év évszakaiba fogjuk csoportosítani. Először az új Date() metódust használjuk az aktuális hónapnak megfelelő szám megkeresésére, és ezt rendeljük hozzá a month változóhoz. A Date().getMonth() metódus egy számot ad vissza 0 és 11 között, ahol a 0 a január, a 11 pedig a december.
A következő specifikáció alapján fogunk kategorizálni:
-
Tél: január, február és március
-
Tavasz: április, május és június
-
Nyár: július, augusztus és szeptember
-
Ősz: október, november és december
Így fog kinézni a kód:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
const month = new Date().getMonth(); switch (month) { // Január, február, március case 0: case 1: case 2: console.log("Tél"); break; // Április, május, június case 3: case 4: case 5: console.log("Tavasz"); break; // Július, augusztus, szeptember case 6: case 7: case 8: console.log("Nyár"); break; // Október, november, december case 9: case 10: case 11: console.log("Ősz"); break; default: console.log("Valami hiba történt."); } |
A fenti kód futtatásakor a hónaptól függően az évszak neve fog megjelenni a konzolon.
Összegzés
Ebben az útmutatóban bemutattuk, hogyan használható a switch utasítás a JavaScript-alkalmazásokban. Emellett alkalmaztuk a switch utasítást egy tartományra és több esetre is, a default kulcsszóval együtt. Ha szeretne többet megtudni a JavaScriptről, tekintse meg az alábbi útmutatókat:
- Munka a JavaScripttel: Mik azok az objektumok?
- JavaScript: A Tutorial on How to Index, Split, and Manipulate Strings
- Munka a JavaScripttel: Hogyan működnek az osztályok
Jó programozást!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.