Junior
Mi az a láthatósági kör JavaScript-ben?
sobes.tech MI
Válasz az MI-től
A JavaScriptben a láthatósági (Scope) terület az a kontextus, amelyben a változók és függvények definiálva vannak és elérhetők.
Egyszerűbben fogalmazva, meghatározza, hogy a kódban hol lehet hivatkozni egy változóra vagy függvényre.
Számos típusú láthatósági terület létezik:
- Globális láthatósági terület (Global Scope): Az olyan változók, amelyeket bármilyen függvényen kívül deklaráltak, a globális területen vannak. Bármely helyről elérhetők a kódban.
// Globális változó let globalVar = "Mindenhol látható"; function showGlobal() { console.log(globalVar); // A függvényen belül elérhető } showGlobal(); - Helyi (függvény) láthatósági terület (Local/Function Scope): A függvényen belül deklarált változók a függvény helyi területén vannak. Csak ebben a függvényben és a beágyazott függvényekben érhetők el, kívülről nem.
function showLocal() { // Helyi változó let localVar = "Csak itt látom"; console.log(localVar); } showLocal(); // console.log(localVar); // Hiba: localVar nincs definiálva - Blokk szintű láthatósági terület (Block Scope): Az ES6 (ES2015) bevezetésével a
letésconstsegítségével. A{}közötti változók, például kódblokkokban, ciklusokban vagy feltételekben, blokk szintű láthatósággal rendelkeznek. Avar-ral deklarált változók nem rendelkeznek blokk szintű láthatósággal.if (true) { // Blokk szintű változó let blockVar = "Csak ebben a blokkban látható"; console.log(blockVar); } // console.log(blockVar); // Hiba: blockVar nincs definiálva for (let i = 0; i < 2; i++) { // Blokk szintű változó a ciklusban console.log(i); } // console.log(i); // Hiba: i nincs definiálva (ha let-et használtak)
Fontos megérteni a Scope Chain (Láthatósági lánc) fogalmát is. Amikor a JavaScript megpróbál értéket találni egy változónak, először a jelenlegi környezetben keresi. Ha nem találja, a külső (szülő) környezetbe lép, és így tovább, egészen a globális környezetig. Ha sehol nem találja, ReferenceError hibát dob.