Úloha 3 – Rozsah platnosti proměnných (scope)

Úvod do úlohy

V předchozí části jsme se seznámili s rozdíly mezi var, let a const. Aby však studenti tyto znalosti skutečně pochopili, je nutné je propojit s klíčovým konceptem jazyka JavaScript – rozsahem platnosti proměnných (scope). Scope určuje, kde je proměnná dostupná a odkud ji lze použít. Pokud tento princip nepochopíme, snadno narazíme na chyby, kdy proměnná „není definovaná“ nebo se naopak neočekávaně přepíše.


Teorie a principy

  1. Globální rozsah (global scope)

    • Proměnná je dostupná odkudkoliv v kódu.

    • Vytvoří se, když ji deklarujeme mimo funkci nebo blok.

    • Nadměrné používání globálních proměnných se nedoporučuje – mohou kolidovat s jinými částmi kódu.

  2. Funkční rozsah (function scope)

    • Typický pro proměnné deklarované pomocí var uvnitř funkce.

    • Proměnná existuje pouze v těle funkce, mimo něj není dostupná.

  3. Blokový rozsah (block scope)

    • Platí pro let a const.

    • Proměnná je dostupná pouze uvnitř bloku { ... }, kde byla deklarována (např. v if, for).

    • Mimo blok není viditelná.


Praktické příklady kódu

Globální rozsah

Funkční rozsah s var

Blokový rozsah s let a const

Rozdíl mezi var a let v bloku


Typické chyby / záludnosti

  • Neočekávané přepsání proměnné při použití var – protože ignoruje blokový rozsah.

  • Pokus o přístup k proměnné mimo její scope – vede k chybě ReferenceError.

  • Zbytečné používání globálních proměnných – hrozí kolize a nejasný tok dat.

  • Nesprávné pochopení rozdílu mezi funkcí a blokem – funkční scope (var) vs. blokový scope (let, const).


Shrnutí

  • Globální scope: proměnná je dostupná odkudkoli.

  • Funkční scope: proměnná je dostupná pouze uvnitř funkce (typicky var).

  • Blokový scope: proměnná je dostupná pouze uvnitř bloku { ... } (let, const).

  • Dnes se doporučuje používat hlavně let a const, které respektují blokový rozsah a předcházejí neočekávaným chybám.