Úloha 2 – Rozdíly mezi var, let a const
| Site: | Moodle ZČU |
| Course: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Book: | Úloha 2 – Rozdíly mezi var, let a const |
| Printed by: | Guest user |
| Date: | Sunday, 18 October 2026, 9:59 AM |
Úvod k úloze
V JavaScriptu existuje více způsobů, jak vytvořit proměnnou – historické var, a moderní let a const, které přinesla specifikace ES6 (2015). Na první pohled se mohou chovat podobně, ale rozdíly mezi nimi jsou zásadní. Porozumění těmto rozdílům je klíčové pro psaní bezpečného, čitelného a předvídatelného kódu. Studenti si tak uvědomí, kdy lze hodnotu proměnné měnit, kdy nikoli, a proč je dnes doporučeno používat let a const místo staršího var.
Teorie a principy
-
var(historické)-
Proměnná deklarovaná pomocí
varmá funkční nebo globální rozsah (function scope, global scope). -
Nezná blokový rozsah – proměnná „přežije“ i mimo blok
{ ... }. -
Umožňuje redeklaraci (znovu vyhlášení té samé proměnné).
-
To může vést k neočekávaným chybám, proto se dnes
varnedoporučuje.
-
-
let(moderní, ES6)-
Má blokový rozsah (block scope) – platí jen uvnitř
{ ... }, kde byla deklarována. -
Hodnotu proměnné lze měnit, ale není možné ji znovu deklarovat v tom samém rozsahu.
-
Používá se pro proměnné, jejichž hodnota se v čase mění.
-
-
const(moderní, ES6)-
Také má blokový rozsah.
-
Hodnotu je nutné při deklaraci rovnou inicializovat a už ji nelze znovu přiřadit.
-
Vhodné pro hodnoty, které se nikdy nemění (např. matematické konstanty, konfigurace).
-
POZOR: u objektů a polí
constchrání pouze samotný odkaz, nikoli vnitřní obsah.
-
Praktické příklady kódu
Rozdíl mezi var a let
const jako neměnná hodnota
const s objektem
Typické chyby / záludnosti
-
Použití
varv moderním kódu – vede k neočekávanému „úniku“ proměnných mimo blok. -
Záměna
constza „neměnný objekt“ –constnemění obsah objektu, pouze odkaz. -
Zapomenutá inicializace u
const– nutné při vyhlášení: -
Redeclarace proměnné s
letneboconst– není povolená ve stejném rozsahu.
Shrnutí
-
var: starší, funkční rozsah, nezná block scope, dnes se nedoporučuje. -
let: moderní, blokový rozsah, hodnota je měnitelná. -
const: moderní, blokový rozsah, hodnota je neměnná (nutná inicializace). -
Doporučená praxe: používat
constve výchozím případě, alettam, kde se hodnota mění.
Úloha
Zadání (kontext úlohy)
Vytvoř tři proměnné:
-
pomocí
varnastavcislo1 = 10, -
pomocí
letnastavcislo2 = 20, -
pomocí
constnastavcislo3 = 30.
Poté zkus změnit jejich hodnoty a sleduj, co se stane.
Cíl úlohy
-
Ověříš si rozdíly mezi var, let a const.
-
Uvidíš, které proměnné lze měnit a které ne.
Vstupní podmínky
-
Máš k dispozici HTML dokument se základní strukturou.
-
Tento HTML dokument je propojený s prázdným souborem
script.js. -
Úpravy provádíš pouze v souboru
script.js.
Požadovaný výstup
-
U proměnných deklarovaných pomocí
varaletse hodnota po změně skutečně přepíše. -
U proměnné deklarované pomocí
constse při pokusu o změnu objeví chyba v konzoli.
Doplňující pokyny
-
constje bezpečnější, protože zaručuje, že hodnota proměnné zůstane neměnná. -
letse používá pro proměnné, jejichž hodnota se může měnit. -
varje starší způsob deklarace – má odlišné chování v rámci tzv. „hoistingu“ a dnes se používá jen výjimečně.
Soubor
Řešení úlohy
Co je zde splněno
-
Vytvořeny tři proměnné pomocí
var,letaconst. -
U
cislo1acislo2se hodnota změnila bez problémů. -
U
cislo3vyvolal pokus o změnu chybu (TypeError: Assignment to constant variable). -
Ukázáno praktické použití a rozdíly.
Poznámky
constzaručuje, že proměnná nebude omylem přepsána.
varse dnes považuje za zastaralý a používá se jen z historických důvodů.Nejčastější praxe: používat
consttam, kde se hodnota nemění, alettam, kde je potřeba proměnnou přepsat.