5.1 Ambito globale
Ambiti di visibilità (scopes) determinano la disponibilità di variabili e funzioni in diverse parti del programma. In JavaScript esistono tre tipi principali di ambiti di visibilità: globale, locale e di blocco. Comprendere questi ambiti è importante per gestire efficacemente i dati e prevenire errori nel codice.
Ambito globale include tutte le variabili e funzioni dichiarate al di fuori di qualsiasi funzione o blocco di codice. Queste variabili e funzioni sono accessibili da qualsiasi parte del codice.
Esempio 1: Dichiarazione di variabili globali
var globalVar = 'I am a global variable';
function showGlobalVar() {
console.log(globalVar); // Accesso alla variabile globale
}
showGlobalVar(); // Mostrerà: I am a global variable
console.log(globalVar); // Accesso alla variabile globale
Esempio 2: Funzioni globali
In questo esempio la variabile globalVar e la funzione globalFunction() sono dichiarate nell'ambito globale e sono accessibili da qualsiasi parte del codice.
function globalFunction() {
return 'I am a global function';
}
console.log(globalFunction()); // Mostrerà: I am a global function
5.2 Ambito locale
Ambito locale include variabili e funzioni dichiarate all'interno di una funzione. Queste variabili e funzioni sono accessibili solo all'interno di quella funzione e non sono disponibili al di fuori di essa.
Esempio 3: Dichiarazione di variabili locali
In questo esempio, la variabile localVar è dichiarata all'interno della funzione localScopeExample() e non è accessibile al di fuori di essa:
function localScopeExample() {
var localVar = 'I am a local variable';
console.log(localVar); // Accesso alla variabile locale
}
localScopeExample(); // Mostrerà: I am a local variable
console.log(localVar); // Errore: localVar is not defined
Esempio 4: Funzioni locali
In questo esempio, la funzione innerFunction() è dichiarata all'interno della funzione outerFunction() e non è disponibile al di fuori di outerFunction():
function outerFunction() {
function innerFunction() {
return 'I am a local function';
}
console.log(innerFunction()); // Accesso alla funzione locale
}
outerFunction(); // Mostrerà: I am a local function
console.log(innerFunction()); // Errore: innerFunction is not defined
5.3 Ambito di blocco
L'ambito di blocco include variabili dichiarate con let e const all'interno di un blocco di codice, delimitato da parentesi graffe {}. Queste variabili sono accessibili solo all'interno di quel blocco e non sono disponibili al di fuori di esso.
Esempio 5: Dichiarazione di variabili con let
In questo esempio, la variabile blockVar è dichiarata all'interno di un blocco if e non è accessibile al di fuori di esso:
if (true) {
let blockVar = 'I am a block-scoped variable';
console.log(blockVar); // Accesso alla variabile di blocco
}
console.log(blockVar); // Errore: blockVar is not defined
Esempio 6: Dichiarazione di variabili con const
In questo esempio, la variabile i è dichiarata all'interno di un blocco for e non è accessibile al di fuori di esso:
for (const i = 0; i < 3; i++) {
console.log(i); // Accesso alla variabile di blocco
}
console.log(i); // Errore: i is not defined
Caratteristiche dell'ambito di blocco
Esempio 7: Blocchi annidati
In questo esempio, la variabile innerVar è accessibile solo all'interno del blocco interno, mentre la variabile outerVar è accessibile sia nel blocco esterno che in quello interno:
if (true) {
let outerVar = 'I am in the outer block';
if (true) {
let innerVar = 'I am in the inner block';
console.log(outerVar); // Accesso alla variabile del blocco esterno
console.log(innerVar); // Accesso alla variabile del blocco interno
}
console.log(outerVar); // Accesso alla variabile del blocco esterno
console.log(innerVar); // Errore: innerVar is not defined
}
5.4 Interazione tra diversi ambiti di visibilità
Esempio 8: Interazione tra ambiti globale e locale
In questo esempio, la funzione scopeExample() ha accesso alla variabile globale globalVar e alla sua variabile locale localVar:
var globalVar = 'I am a global variable';
function scopeExample() {
var localVar = 'I am a local variable';
console.log(globalVar); // Accesso alla variabile globale
console.log(localVar); // Accesso alla variabile locale
}
scopeExample(); // Mostrerà: I am a global variable
// I am a local variable
console.log(globalVar); // Accesso alla variabile globale
console.log(localVar); // Errore: localVar is not defined
Esempio 9: Ambiti di visibilità con una funzione arrow
In questo esempio, la funzione arrow arrowFunction() ha accesso alla variabile globale globalVar e alla sua variabile locale localVar:
let globalVar = 'I am a global variable';
const arrowFunction = () => {
let localVar = 'I am a local variable in arrow function';
console.log(globalVar); // Accesso alla variabile globale
console.log(localVar); // Accesso alla variabile locale
};
arrowFunction(); // Mostrerà: I am a global variable
// I am a local variable in arrow function
console.log(globalVar); // Accesso alla variabile globale
console.log(localVar); // Errore: localVar is not defined
GO TO FULL VERSION