Úvod
Podmienkové príkazy sú jedným z najdôležitejších riadiacich tokov v akomkoľvek programovacom jazyku. Používame ich na určenie správania vykonávania na základe určitej podmienky. V Javascript, podmienkové bloky môžu byť vytvorené pomocou if, else if, else, a switch príkazov.
Príkaz switch uľahčuje čitateľnosť riadiaceho toku tým, že rozhoduje na základe možných výsledkov výrazu. V závislosti od zodpovedajúceho prípadu použitia sa môže vykonať jeden alebo viac blokov kódu. Riadenie switch je podobné príkazu else if. Avšak, switch má z hľadiska syntaxe čitateľnejšiu štruktúru. Je tiež ideálny pre scenáre s viacerými možnými výsledkami.
V tomto návode sa zameriame na príkaz switch v Javascripte a implementujeme ho na zostavenie zložitých riadiacich štruktúr. Naučíme sa tiež, ako používať príkazy break , case, a default v rámci bloku switch na usmernenie toku riadenia.
Používanie príkazu Switch
Príkaz switch funguje tak, že porovnáva hodnotu premennej s možnými výrazmi. Potom vykoná blok kódu, ktorý zodpovedá výsledku. Syntax príkazu switch sa nelíši od príkazu if. Stručne povedané, syntax príkazu switch sa píše takto:
|
1 2 |
switch() { } |
Nižšie je uvedený príklad príkazu switch. Má dva prípady alebo dva možné výsledky spolu s predvolenou možnosťou určenou kľúčovým slovom default. Táto predvolená možnosť sa vykoná, keď sa vykonávanie ukončí alebo keď sa nenájde žiadny zhodný prípad:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (expression) { case x: // vykoná tento blok kódu, keď sa výraz zhoduje s case x break; case y: // vykoná tento blok kódu, keď sa výraz zhoduje s case y break; default: // predvolený blok } |
Vyššie uvedený kód sa vykoná nasledovne:
-
Najprv sa vyhodnotí výraz.
-
Ďalej sa výsledok výrazu porovná s case x. Ak sa hodnota zhoduje, vykoná sa blok kódu pod case x sa vykoná.
-
Ak sa výraz nezhoduje s case x, potom sa porovnáva case y. Ak sa nájde zhoda, potom sa kód case y vykoná.
-
Nakoniec, ak sa nezhoduje ani case x ani case y, potom sa vykoná default kód a riadenie sa presunie mimo switch bloku.
Fungujúci príklad
Aby sme pochopili príkaz switch, pozrime sa na fungujúci príklad. Získame hodnotu dňa v týždni pre aktuálny dátum pomocou metódy getDay() objektu Date v Javascripte. Táto hodnota je číslo, pre nedeľu až po 6 pre sobotu. Vyhodnotíme ju voči hodnotám, aby sme určili, o aký deň v týždni ide:
|
1 |
const day = new Date().getDay(); |
Ďalej túto hodnotu pošleme príkazu switch. Príkaz switch prebehne zhora nadol, aby ju porovnal s prípadmi a určil, o aký deň v týždni ide. Keď sa nájde prípad, break príkaz zastaví switch blok pred pokračovaním vo vyhodnocovaní príkazov:
|
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 |
// Nastaví aktuálny deň v týždni do premennej, pričom 0 je nedeľa a 6 je sobota const day = new Date().getDay(); switch (day) { case 0: console.log("Je nedeľa"); break; case 1: console.log("Je pondelok!"); break; case 2: console.log("Je utorok."); break; case 3: console.log("Už je streda!"); break; case 4: console.log("Je štvrtok"); break; case 5: console.log("Pekný piatok!"); break; case 6: console.log("Je sobota!"); break; default: console.log("Žiadny prípad sa nezhoduje") } |
V závislosti od hodnoty vrátenej z getDate() metódy, bude testovaná voči jednotlivým prípadom jeden po druhom, počnúc zhora. Výstup sa bude líšiť v závislosti od dňa, kedy ste kód spustili. Predvolený blok kódu (default) je umiestnený tak, aby sme v prípade, že sa nezhoduje žiadny prípad, mohli túto situáciu vyriešiť. V tomto kóde sa však default nikdy nezavolá, keďže existuje len obmedzený počet dní v týždni.
Príkaz break zabezpečuje, že po nájdení zhody sa už netestujú žiadne ďalšie prípady a riadenie vystúpi z príkazu switch. Vďaka tomu je program efektívnejší a rýchlejší.
Testovanie rozsahov hodnôt v príkaze Switch
Doteraz sme sa zaoberali veľmi jednoduchými prípadmi použitia. Môžu však nastať situácie, kedy je potrebné testovať rozsah hodnôt namiesto jednej konkrétnej hodnoty. Môžeme to urobiť tak, že náš výraz nastavíme na true a vykonáme operáciu v rámci každého príkazu case.
Poďme si tento prípad použitia ukázať na príklade. Vezmeme číslo a potom ho skonvertujeme na známku pomocou nasledujúcej kategorizácie:
-
Známka 90 a viac je A
-
Známka od 80 do 89 je B
-
Známka od 70 do 79 je C
-
Známka od 60 do 69 je D
-
Známka 59 alebo menej je F
Tieto príkazy zapíšeme ako príkazy switch. Nižšie je uvedený 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 |
// Známka študenta const grade = 87; switch (true) { // Ak je skóre 90 alebo viac case grade >= 90: console.log("A"); break; // Ak je skóre 80 alebo viac case grade >= 80: console.log("B"); break; // Ak je skóre 70 alebo viac case grade >= 70: console.log("C"); break; // Ak je skóre 60 alebo viac case grade >= 60: console.log("D"); break; // Čokoľvek 59 alebo menej znamená neprospel default: console.log("F"); } |
Na rozdiel od vyššie uvedených príkladov kódu sme tu výraz v zátvorke nastavili ako true. Preto sa vykoná ten príkaz case, ktorý sa zhoduje s hodnotou true. Presne ako pri príkaze else if, vykoná sa prvý príkaz, ktorý sa zhoduje so špecifikovanou hodnotou. Tu bude výstupom B, napriek tomu, že aj C a D tiež zodpovedajú výrazu.
Viacnásobné prípady
Ak chcete mať viac ako jeden prípad s rovnakým blokom kódu, je to tiež možné. Je to analogické s podmienkou alebo v príkaze if. V takýchto scenároch môžeme pre každý blok kódu špecifikovať viac ako jeden prípad.
Na ilustráciu tohto konceptu uvedieme príklad s mesiacmi v roku. Tieto mesiace rozdelíme do ročných období. Najprv použijeme novú metódu Date() na zistenie čísla zodpovedajúceho aktuálnemu mesiacu a priradíme ho do premennej month. Metóda Date().getMonth() vracia číslo od 0 do 11, pričom 0 predstavuje január a 11 patrí decembru.
Kategorizáciu vykonáme podľa nasledujúcej špecifikácie:
-
Zima: január, február a marec
-
Jar: apríl, máj a jún
-
Leto: júl, august a september
-
Jeseň: október, november a december
Takto bude kód vyzerať:
|
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, marec case 0: case 1: case 2: console.log("Zima"); break; // apríl, máj, jún case 3: case 4: case 5: console.log("Jar"); break; // júl, august, september case 6: case 7: case 8: console.log("Leto"); break; // október, november, december case 9: case 10: case 11: console.log("Jeseň"); break; default: console.log("Niečo sa pokazilo."); } |
Po vykonaní vyššie uvedeného kódu sa v závislosti od mesiaca v konzole zobrazí názov ročného obdobia.
Záver
V tomto návode sme si ukázali, ako používať príkaz switch v aplikáciách JavaScript. Taktiež sme aplikovali príkaz switch na rozsah a viacnásobné prípady spolu s kľúčovým slovom default. Ak sa chcete dozvedieť viac o JavaScripte, môžete si pozrieť nasledujúce návody:
- Práca s JavaScriptom: Čo sú to objekty?
- JavaScript: Návod, ako indexovať, rozdeľovať a manipulovať s reťazcami
- Práca s JavaScriptom: Ako fungujú triedy
Príjemné programovanie!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.