Úloha 3 – Kombinace if/else a switch pro vyhodnocení výsledku
Úvod do úlohy
Když používáme switch, je důležité si uvědomit, že v JavaScriptu porovnává přísně – tedy stejně, jako kdybychom použili operátor ===. To znamená, že porovnává nejen hodnotu, ale i datový typ. Proto se může stát, že i když dvě hodnoty na první pohled vypadají stejně, switch je nebude považovat za shodné. Tento blok cvičení vám pomůže pochopit, proč je někdy switch bezpečnější (chrání před nechtěnými konverzemi typů), ale v jiných případech je naopak praktičtější použít klasické if/else.
Teorie a principy
-
Striktní rovnost (
===):-
Hodnota a datový typ musí být shodné.
-
Příklad:
"5" === 5vracífalse, protože vlevo je řetězec a vpravo číslo.
-
-
Volná rovnost (
==):-
Porovnává jen hodnotu a při tom provádí konverzi typů.
-
"5" == 5vracítrue, protože se řetězec převede na číslo.
-
-
Chování
switch:-
Uvnitř
switchse vždy používá striktní porovnání (===). -
To může být výhoda (přesné vyhodnocení), ale i zdroj zmatků, pokud očekáváte chování jako při
==.
-
Praktické příklady kódu
1. Switch s číslem vs. řetězcem
Výsledek: spustí se větev "1", protože jen ta se shoduje typem i hodnotou.
2. Rozdíl mezi if a switch
3. Situace, kdy je lepší if/else
Pokud musíme povolit různé datové typy (např. číslo i řetězec), je vhodnější použít if/else s == nebo s kombinovanými podmínkami:
4. Situace, kdy je switch bezpečnější
Tady je switch přesnější – rozlišuje číslo a řetězec.
Typické chyby / záludnosti
-
Očekávání, že switch funguje jako
==– studenti se často diví, že"5"a5se neshodují. -
Nepohlídání datového typu vstupu – při načítání z formuláře dostaneme obvykle řetězec, i když to „vypadá jako číslo“.
-
Nevhodný výběr konstrukce – pokud chceme rozlišovat více typů (číslo i text), je přehlednější použít
if/else.
Shrnutí
-
switchpoužívá striktní porovnávání (===). -
Rozlišuje nejen hodnotu, ale i datový typ.
-
Vstup z formuláře bývá řetězec, takže se nemusí shodovat s číslem.
-
if/elsese hodí tam, kde potřebujeme volnější porovnání (==) nebo složitější logiku. -
switchje naopak užitečný tam, kde chceme mít jistotu, že typy i hodnoty opravdu sedí.