Junior
Шта је опсег у JavaScript-у?
sobes.tech АИ
Одговор од АИ
Opseg (Scope) u JavaScript-u je kontekst u kojem su definisane i dostupne promenljive i funkcije.
Jednostavno rečeno, određuje gde u kodu se može referisati na promenljivu ili funkciju.
Postoji nekoliko tipova opsega:
- Globalni opseg (Global Scope): Promenljive deklarisane van bilo koje funkcije nalaze se u globalnom opsegu. One su dostupne sa bilo kog mesta u kodu.
// Globalna promenljiva let globalVar = "Vidljiv sam svuda"; function showGlobal() { console.log(globalVar); // Dostupno unutar funkcije } showGlobal(); - Lokalni (funkcijski) opseg (Local/Function Scope): Promenljive deklarisane unutar funkcije su u lokalnom opsegu te funkcije. One su dostupne samo unutar te funkcije i u ugnježdenim funkcijama, ali ne i spolja.
function showLocal() { // Lokalna promenljiva let localVar = "Vidim samo ovde"; console.log(localVar); } showLocal(); // console.log(localVar); // Greška: localVar nije definisana - Blok opseg (Block Scope): Uveden u ES6 (ES2015) sa
leticonst. Promenljive deklarisane saletiliconstunutar uglastih zagrada ({}), na primer u blokovima koda, petljama ili uslovima, imaju blok opseg. Promenljive deklarisane savarnemaju blok opseg.if (true) { // Promenljiva sa blok opsegom let blockVar = "Vidljiva samo u ovom bloku"; console.log(blockVar); } // console.log(blockVar); // Greška: blockVar nije definisana for (let i = 0; i < 2; i++) { // Promenljiva sa blok opsegom u petlji console.log(i); } // console.log(i); // Greška: i nije definisana (ako je korišćen let)
Takođe je važno razumeti koncept niza opsega (Scope Chain). Kada JavaScript pokušava da pronađe vrednost promenljive, prvo traži u trenutnom opsegu. Ako je ne pronađe, prelazi u spoljašnji (roditeljski) opseg i tako dalje, sve do globalnog opsega. Ako promenljiva nije pronađena nigde, izaziva grešku ReferenceError.