Ú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" === 5 vrací 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" == 5 vrací true, protože se řetězec převede na číslo.

  • Chování switch:

    • Uvnitř switch se 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" a 5 se 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í

  • switch použí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/else se hodí tam, kde potřebujeme volnější porovnání (==) nebo složitější logiku.

  • switch je naopak užitečný tam, kde chceme mít jistotu, že typy i hodnoty opravdu sedí.