Úvod
Podmíněné příkazy jsou jedním z nejdůležitějších řídicích toků v jakémkoli programovacím jazyce. Používáme je k určení chování provádění na základě určité podmínky. V Javascript, podmíněné bloky lze sestavit pomocí if, else if, else, a switch příkazů.
Příkaz switch usnadňuje čtení řídicího toku tím, že rozhoduje na základě možných výsledků výrazu. V závislosti na odpovídajícím případu použití lze provést jeden nebo více bloků kódu. Řízení switch je podobné příkazu else if příkazu. Nicméně switch má z hlediska syntaxe čitelnější zápis. Je také ideální pro scénáře s více možnými výsledky.
V tomto návodu se zaměříme na příkaz switch v JavaScriptu a implementujeme jej k vytvoření složitých řídicích struktur. Naučíme se také, jak používat příkazy break , case, a default uvnitř bloku switch k řízení toku provádění.
Použití příkazu Switch
Příkaz switch funguje tak, že porovnává hodnotu proměnné s možnými výrazy. Poté provede blok kódu, který odpovídá výsledku. Syntaxe příkazu switch se neliší od příkazu if příkazu. Stručně řečeno, syntaxe příkazu switch se zapisuje takto:
|
1 2 |
switch() { } |
Níže je uveden příklad příkazu switch. Má dva případy neboli dva možné výsledky spolu s výchozí možností určenou klíčovým slovem default. Tato výchozí možnost se provede, když provádění skončí nebo když není nalezen žádný odpovídající případ:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (expression) { case x: // provede tento blok kódu, pokud výraz odpovídá case x break; case y: // provede tento blok kódu, pokud výraz odpovídá case y break; default: // výchozí blok } |
Výše uvedený kód se provádí následovně:
-
Nejprve se vyhodnotí výraz.
-
Dále se výsledek výrazu porovná s case x. Pokud hodnota odpovídá, provede se blok kódu pod case x .
-
Pokud výraz neodpovídá case x, pak se porovná s case y. Pokud je nalezena shoda, provede se kód case y .
-
Nakonec, pokud neodpovídá ani case x ani case y, provede se kód default a řízení se přesune mimo blok switch .
Praktický příklad
Abychom porozuměli příkazu switch, podívejme se na praktický příklad. Získáme hodnotu dne v týdnu pro aktuální datum pomocí metody getDay() metody objektu Date v JavaScriptu. Tato hodnota je číslo, pro neděli až po 6 což je pro sobotu. Vyhodnotíme ji vůči hodnotám, abychom určili, o jaký den v týdnu se jedná:
|
1 |
const day = new Date().getDay(); |
Dále tuto hodnotu předáme příkazu switch. Příkaz switch se provede odshora dolů, aby ji porovnal s případy a určil, o který den v týdnu se jedná. Jakmile je případ nalezen, příkaz break zastaví další vyhodnocování příkazů v bloku switch :
|
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ální den v týdnu do proměnné, přičemž 0 je neděle a 6 je sobota const day = new Date().getDay(); switch (day) { case 0: console.log("Je neděle"); break; case 1: console.log("Je pondělí!"); break; case 2: console.log("Je úterý."); break; case 3: console.log("Už je středa!"); break; case 4: console.log("Je čtvrtek"); break; case 5: console.log("Hezký pátek!"); break; case 6: console.log("Je sobota!"); break; default: console.log("Žádná možnost neodpovídá") } |
V závislosti na hodnotě vrácené z getDate() metody bude tato hodnota testována vůči jednotlivým případům jeden po druhém, počínaje shora. Výstup se bude lišit v závislosti na dni, kdy kód spustíte. Výchozí blok kódu (default) je umístěn proto, abychom mohli ošetřit situaci, kdy neodpovídá žádný případ. V tomto kódu se však default nikdy nezavolá, protože týden má pouze omezený počet dní.
Příkaz break zajišťuje, že jakmile dojde ke shodě s případem, žádné další případy se již netestují a řízení opustí příkaz switch. Díky tomu je program efektivnější a rychlejší.
Testování rozsahů v příkazu Switch
Až dosud jsme se zabývali velmi jednoduchými případy použití. Někdy je však potřeba testovat rozsah hodnot namísto jedné konkrétní hodnoty. Toho můžeme docílit nastavením našeho výrazu na true a provedením operace uvnitř každého příkazu case .
Pojďme si tento případ použití ukázat na příkladu. Vezmeme číslo a poté ho převedeme na známku pomocí následující kategorizace:
-
Známka 90 a více 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 nebo méně je F
Tyto příkazy zapíšeme jako příkazy switch. Níže 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 studenta const grade = 87; switch (true) { // Pokud je skóre 90 nebo vyšší case grade >= 90: console.log("A"); break; // Pokud je skóre 80 nebo vyšší case grade >= 80: console.log("B"); break; // Pokud je skóre 70 nebo vyšší case grade >= 70: console.log("C"); break; // Pokud je skóre 60 nebo vyšší case grade >= 60: console.log("D"); break; // Cokoliv 59 nebo méně znamená nedostatečnou default: console.log("F"); } |
Na rozdíl od výše uvedených příkladů kódu jsme zde výraz v závorce nastavili jako true. Proto se provede ten příkaz case, který odpovídá hodnotě true. Stejně jako u příkazu else if se provede první příkaz, který odpovídá zadané hodnotě. Zde bude výstupem B, i přes skutečnost, že i C a D také odpovídají výrazu.
Více případů
Pokud chcete mít více než jeden případ se stejným blokem kódu, je to také možné. To je obdobné jako podmínka nebo v příkazu if. V takových scénářích můžeme pro každý blok kódu specifikovat více než jeden případ.
Pro ilustraci tohoto konceptu uvedeme příklad s měsíci v roce. Tyto měsíce rozdělíme do ročních období. Nejprve použijeme novou metodu Date() k nalezení čísla odpovídajícího aktuálnímu měsíci a toto číslo přiřadíme proměnné month. Metoda Date().getMonth() vrací číslo od 0 do 11, přičemž 0 představuje leden a 11 prosinec.
Kategorizaci provedeme podle následující specifikace:
-
Zima: leden, únor a březen
-
Jaro: duben, květen a červen
-
Léto: červenec, srpen a září
-
Podzim: říjen, listopad a prosinec
Zde je ukázka, jak bude kód vypadat:
|
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) { // Leden, únor, březen case 0: case 1: case 2: console.log("Zima"); break; // Duben, květen, červen case 3: case 4: case 5: console.log("Jaro"); break; // Červenec, srpen, září case 6: case 7: case 8: console.log("Léto"); break; // Říjen, listopad, prosinec case 9: case 10: case 11: console.log("Podzim"); break; default: console.log("Něco se pokazilo."); } |
Po spuštění výše uvedeného kódu se v závislosti na měsíci v konzoli zobrazí název ročního období.
Závěr
V tomto návodu jsme si ukázali, jak používat příkaz switch v aplikacích v JavaScriptu. Příkaz switch jsme také aplikovali na rozsah a více případů společně s klíčovým slovem default. Pokud se chcete o JavaScriptu dozvědět více, můžete se podívat na následující návody:
- Práce s JavaScriptem: Co jsou to objekty?
- JavaScript: Návod, jak indexovat, rozdělovat a manipulovat s řetězci
- Práce s JavaScriptem: Jak fungují třídy
Přejeme příjemné programování!
Komentáře
Zatím žádné komentáře. Buďte první.