1.12 Porovnávací operátory
Výuka
Porovnávací operátory slouží k porovnávání hodnot a vracejí boolean (true nebo false).
Typy porovnání
| Operátor | Název | Popis | Koerze? |
|---|---|---|---|
== |
Rovná se | Volné porovnání | ✅ Ano |
!= |
Nerovná se | Volné porovnání | ✅ Ano |
=== |
Striktně rovná se | Přísné porovnání | ❌ Ne |
!== |
Striktně nerovná se | Přísné porovnání | ❌ Ne |
> |
Větší než | Číselné porovnání | ✅ Ano |
< |
Menší než | Číselné porovnání | ✅ Ano |
>= |
Větší nebo rovno | Číselné porovnání | ✅ Ano |
<= |
Menší nebo rovno | Číselné porovnání | ✅ Ano |
Type Coercion (koerze typů)
Volné porovnání (==, !=):
- JavaScript automaticky převádí typy
5 == '5'→true(string '5' se převede na number)- Může vést k neočekávaným výsledkům
Přísné porovnání (===, !==):
- Porovnává hodnotu i typ
5 === '5'→false(number ≠ string)- Vždy doporučováno!
JavaScript
// Volné porovnání (==) - s type coercion
5 == '5'; // true ⚠️
0 == false; // true ⚠️
null == undefined; // true ⚠️
'' == 0; // true ⚠️
// Přísné porovnání (===) - bez type coercion
5 === '5'; // false ✅
0 === false; // false ✅
null === undefined; // false ✅
'' === 0; // false ✅
// Negace
5 != '5'; // false (s koerzí)
5 !== '5'; // true (bez koerze)
// Číselné porovnání
10 > 5; // true
10 < 5; // false
10 >= 10; // true
10 <= 5; // false
// String porovnání (lexikografické)
'apple' < 'banana'; // true
'10' < '2'; // true (⚠️ string porovnání!)
TypeScript
// TS kontroluje kompatibilitu typů
const num: number = 5;
const str: string = '5';
// num == str; // ⚠️ TS varuje (ale zkompiluje)
num === str; // ❌ Error: This condition will always return 'false'
// S explicitními literal types
type Status = 'success' | 'error';
const status: Status = 'success';
if (status === 'success') { // ✅ TS ví, že je to ok
console.log('Úspěch!');
}
// if (status === 'pending') { // ❌ Error: nevyčerpávající check
// ...
// }
// Narrowing s type guards
function process(value: string | number) {
if (typeof value === 'string') {
// TS ví, že zde je value: string
console.log(value.toUpperCase());
} else {
// TS ví, že zde je value: number
console.log(value.toFixed(2));
}
}
Rozdíl JS vs TS
JavaScript:
- Porovnání fungují za běhu
==provádí type coercion- Chyby odhalíš až při spuštění
TypeScript:
- Kontroluje kompatibilitu typů při kompilaci
- Varuje před nebezpečnými porovnáními
- Některé chyby odchytí už v editoru
Doporučení:
- Vždy používej
===a!==(v obou jazycích) - V TS využívej type guards pro narrowing
Tip
💡 Vždy používej === místo ==:
// ❌ Špatně - neočekávané chování
if (input == 0) { } // true pro '', false, 0, '0'
// ✅ Dobře - explicitní
if (input === 0) { } // true jen pro 0
💡 Pozor na NaN:
NaN == NaN; // false
NaN === NaN; // false
// Použij Number.isNaN()
Number.isNaN(NaN); // true
💡 Porovnání objektů:
{} === {}; // false (různé reference)
[] === []; // false (různé reference)
const obj1 = { a: 1 };
const obj2 = obj1;
obj1 === obj2; // true (stejná reference)
Kvíz
Které výroky jsou pravdivé?
✅ - == provádí type coercion, takže '5' se převede na 5 → true
❌ - === porovnává i typ: number ≠ string → false
✅ - === nekonvertuje typy, takže se vyhneš neočekávaným výsledkům
❌ - TS dovolí ==, ale varuje (lze zkompilovat)
🎯 Závěrečný projekt
Po dokončení všech 8 dílů vytvoříte jednoduchou Todо aplikaci v čistém JavaScriptu. Naučíte se, jak aplikovat vše, co jste se naučili, na reálný projekt.
Zobrazit podrobnosti projektu →Informace o seriálu
Obtížnost
Délka
Cca 480 minut
Počet videí
8 videí + projekty
Certifikát
Po dokončení obdržíte certifikát
Lekce v této sekci
- 1.1 Úvod do JavaScriptu a TypeScriptu
- 1.2 Nastavení prostředí
- 1.3 První program
- 1.4 Proměnné: var, let, const
- 1.5 Datové typy - přehled
- 1.6 String (řetězce)
- 1.7 Number (čísla)
- 1.8 Boolean (pravda/nepravda)
- 1.9 Null a Undefined
- 1.10 Type Inference vs Annotations
- 1.11 Aritmetické operátory
- 1.12 Porovnávací operátory
- 1.13 Logické operátory
- 1.14 Komentáře
- 1.15 Console metody
Struktura lekcí (souborový strom)
- 1.1 Úvod do JavaScriptu a TypeScriptu
- 1.2 Nastavení prostředí
- 1.3 První program
- 1.4 Proměnné: var, let, const
- 1.5 Datové typy - přehled
- 1.6 String (řetězce)
- 1.7 Number (čísla)
- 1.8 Boolean (pravda/nepravda)
- 1.9 Null a Undefined
- 1.10 Type Inference vs Annotations
- 1.11 Aritmetické operátory
- 1.12 Porovnávací operátory
- 1.13 Logické operátory
- 1.14 Komentáře
- 1.15 Console metody
- 03.01 Deklarace funkce
- 03.02 Function Expression
- 03.03 Arrow Functions
- 03.04 Parametry a argumenty
- 03.05 Return hodnoty
- 03.06 Výchozí parametry
- 03.07 Rest parametry
- 03.08 Co je Scope
- 03.09 Lexikální Scope
- 03.10 Řetězec Scope
- 03.11 Globální Scope
- 03.12 Životní Cyklus Proměnných
- 03.13 Omezení Scope
- 03.14 Použití Closures
- 03.15 Callback funkce
- 03.16 Higher-order Functions
- 03.17 IIFE
- 03.18 Void funkce
- 03.19 Rekurze
- v přípravě
- v přípravě
- v přípravě
- v přípravě
- 01 — Co je Next.js
- 02 — Vytvoření projektu
- 03 — Struktura projektu (app/)
- 04 — Page komponenty (page.js / page.tsx)
- 05 — Layout komponenty (layout.js / layout.tsx)
- 06 — File-based routing
- 07 — Dynamické routy ([id]/page.js)
- 08 — Link komponenta (navigace)
- 09 — Image komponenta (next/image)
- 10 — Metadata (title, description, Open Graph)
- 11 — Loading UI (loading.js / loading.tsx)
- 12 — Error handling (error.js / error.tsx)
- 13 — Not Found (not-found.js / not-found.tsx)
- v přípravě
- v přípravě
- v přípravě