Junior
Co je to rozsah v JavaScriptu?
sobes.tech AI
Odpověď od AI
Rozsah (Scope) v JavaScriptu je kontext, ve kterém jsou definovány a dostupné proměnné a funkce.
Jednoduše řečeno, určuje, kde v kódu lze odkazovat na proměnnou nebo funkci.
Existuje několik typů rozsahů:
- Globální rozsah (Global Scope): Proměnné deklarované mimo jakoukoli funkci jsou v globálním rozsahu. Jsou dostupné odkudkoli v kódu.
// Globální proměnná let globalVar = "Viditelný všude"; function showGlobal() { console.log(globalVar); // Dostupné uvnitř funkce } showGlobal(); - Lokální (funkční) rozsah (Local/Function Scope): Proměnné deklarované uvnitř funkce jsou v lokálním rozsahu této funkce. Jsou dostupné pouze uvnitř této funkce a v jejích vnořených funkcích, ale ne zvenčí.
function showLocal() { // Lokální proměnná let localVar = "Vidím jen tady"; console.log(localVar); } showLocal(); // console.log(localVar); // Chyba: localVar není definována - Blokový rozsah (Block Scope): Zavedený v ES6 (ES2015) s
letaconst. Proměnné deklarované pomocíletneboconstuvnitř složených závorek ({}), například v blocích kódu, cyklech nebo podmínkách, mají blokový rozsah. Proměnné deklarované pomocívarnemají blokový rozsah.if (true) { // Proměnná s blokovým rozsahem let blockVar = "Viditelná pouze v tomto bloku"; console.log(blockVar); } // console.log(blockVar); // Chyba: blockVar není definována for (let i = 0; i < 2; i++) { // Proměnná s blokovým rozsahem v cyklu console.log(i); } // console.log(i); // Chyba: i není definována (pokud bylo použito let)
Je také důležité pochopit koncept Scope Chain (řetězec rozsahů). Když JavaScript hledá hodnotu proměnné, nejprve prohledá aktuální rozsah. Pokud ji nenajde, přejde do vnějšího (rodičovského) rozsahu a tak dále, až do globálního rozsahu. Pokud proměnnou nenajde nikde, vyhodí chybu ReferenceError.