Úloha 2 – Rozdíly mezi var, let a const
Ú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í.