Úvod do úlohy
Relační operátory patří k úplným základům programování – umožňují nám porovnávat hodnoty a rozhodovat, zda jsou si rovné, nerovné, větší nebo menší. Bez nich bychom nedokázali psát podmínky, cykly ani větvení programu. Ať už kontrolujeme, jestli je číslo větší než 100, nebo jestli uživatel zadal správné heslo, relační operátory jsou vždy u toho. Proto je důležité nejen znát jejich zápis, ale také chápat, co přesně vracejí (vždy true nebo false) a jak fungují při práci s různými datovými typy.
Teorie a principy
-
Základní relační operátory v JavaScriptu
-
Rovnost:
-
== (porovnává hodnotu, provádí typovou konverzi)
-
=== (porovnává hodnotu i typ, tzv. „strict equality“)
-
Nerovnost:
-
Porovnání velikosti:
-
> větší než
-
>= větší nebo rovno
-
< menší než
-
<= menší nebo rovno
-
Výsledek porovnání
-
Každý relační operátor vrací logickou hodnotu (true nebo false).
-
To je klíčové – výraz lze přímo použít v if, while, apod.
-
Porovnávání čísel a řetězců
-
U čísel probíhá porovnání přirozeně (např. 10 > 7 je true).
-
U řetězců se používá lexikografické uspořádání, tedy podle „slovníkového pořadí“.
-
Porovnává se znak po znaku podle Unicode hodnot.
-
Např. "apple" < "banana" → true.
-
Velká písmena mají jiné hodnoty než malá ("Zebra" <
"apple" → true, protože Z má menší kód než a).
Praktické příklady kódu
Číselné porovnání
Rovnost a typy
Lexikografické porovnání
Typické chyby / záludnosti
-
Záměna == a === – == provádí typovou konverzi, což často vede k neočekávaným výsledkům. Proto se v praxi doporučuje používat vždy === a !==.
-
Lexikografické porovnání řetězců – studenti někdy očekávají „délkové“ porovnání (že delší řetězec je větší), ale rozhodující je pořadí znaků, ne délka.
-
Porovnání různých typů – např. 0 == false je true, ale 0 === false je false.
-
Velká vs. malá písmena – "A" < "a" je true, protože velké písmeno má nižší Unicode kód než malé.
Shrnutí
-
Relační operátory (==, ===, !=, !==, <, <=, >, >=) vracejí vždy true nebo false.
-
Rozdíl mezi == a === je v tom, zda dochází k typové konverzi.
-
U čísel se porovnává hodnota, u řetězců lexikografické pořadí znaků.
-
Nejčastější pasti: typová konverze (==), lexikografické vs. délkové porovnávání a rozdíly mezi velkými a malými písmeny.