Junior
Cos'è la portata in JavaScript?
sobes.tech AI
Risposta dell'AI
L'ambito (Scope) in JavaScript è il contesto in cui sono definite e accessibili variabili e funzioni.
In parole semplici, determina dove nel codice si può fare riferimento a una variabile o funzione.
Esistono diversi tipi di ambito:
- Ambito globale (Global Scope): Le variabili dichiarate fuori da qualsiasi funzione si trovano nell'ambito globale. Sono accessibili da qualsiasi punto del codice.
// Variabile globale let globalVar = "Sono visibile ovunque"; function showGlobal() { console.log(globalVar); // Disponibile all'interno della funzione } showGlobal(); - Ambito locale (Local/Function Scope): Le variabili dichiarate all'interno di una funzione sono nell'ambito locale di quella funzione. Sono accessibili solo all'interno di essa e nelle funzioni annidate, ma non dall'esterno.
function showLocal() { // Variabile locale let localVar = "Vedo solo qui"; console.log(localVar); } showLocal(); // console.log(localVar); // Errore: localVar non definita - Ambito di blocco (Block Scope): Introdotto in ES6 (ES2015) con
leteconst. Le variabili dichiarate conletoconstall'interno di parentesi graffe ({}), come blocchi di codice, cicli o condizioni, hanno ambito di blocco. Le variabili dichiarate convarnon hanno ambito di blocco.if (true) { // Variabile con ambito di blocco let blockVar = "Visibile solo in questo blocco"; console.log(blockVar); } // console.log(blockVar); // Errore: blockVar non definita for (let i = 0; i < 2; i++) { // Variabile con ambito di blocco nel ciclo console.log(i); } // console.log(i); // Errore: i non definita (se si usa let)
È anche importante comprendere il concetto di catena di scope (Scope Chain). Quando JavaScript cerca il valore di una variabile, inizia dall'ambito corrente. Se non la trova, passa all'ambito esterno (genitore), e così via, fino all'ambito globale. Se non viene trovata, viene generato un errore ReferenceError.