In questo tutorial imparerai a conoscere l'ambito delle variabili in JavaScript con l'aiuto di esempi.
L'ambito si riferisce alla disponibilità di variabili e funzioni in alcune parti del codice.
In JavaScript, una variabile ha due tipi di ambito:
- Ambito globale
- Ambito locale
Ambito globale
Una variabile dichiarata all'inizio di un programma o all'esterno di una funzione è considerata una variabile di ambito globale.
Vediamo un esempio di una variabile di ambito globale.
// program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello
Nel programma precedente, la variabile a è dichiarata all'inizio di un programma ed è una variabile globale. Significa che la variabile a
può essere utilizzata ovunque nel programma.
Il valore di una variabile globale può essere modificato all'interno di una funzione. Per esempio,
// program to show the change in global variable let a = "hello"; function greet() ( a = 3; ) // before the function call console.log(a); //after the function call greet(); console.log(a); // 3
Nel programma precedente, la variabile a è una variabile globale. Il valore di a è ciao. Quindi si accede alla variabile a all'interno di una funzione e il valore cambia in 3.
Quindi, il valore di a cambia dopo averlo modificato all'interno della funzione.
Nota : è buona norma evitare di utilizzare variabili globali perché il valore di una variabile globale può cambiare in diverse aree del programma. Può introdurre risultati sconosciuti nel programma.
In JavaScript, una variabile può essere utilizzata anche senza dichiararla. Se una variabile viene utilizzata senza dichiararla, quella variabile diventa automaticamente una variabile globale.
Per esempio,
function greet() ( a = "hello" ) greet(); console.log(a); // hello
Nel programma precedente, la variabile a è una variabile globale.
Se la variabile fosse dichiarata utilizzando let a = "hello"
, il programma genererebbe un errore.
Nota : in JavaScript, "strict mode";
una variabile non può essere utilizzata senza dichiararla. Per ulteriori informazioni su strict, visitare JavaScript Strict.
Ambito locale
Una variabile può anche avere un ambito locale, ovvero è possibile accedervi solo all'interno di una funzione.
Esempio 1: variabile di ambito locale
// program showing local scope of a variable let a = "hello"; function greet() ( let b = "World" console.log(a + b); ) greet(); console.log(a + b); // error
Produzione
helloWorld Uncaught ReferenceError: b non è definito
Nel programma precedente, la variabile a è una variabile globale e la variabile b è una variabile locale. La variabile b è accessibile solo all'interno della funzione greet. Quindi, quando proviamo ad accedere alla variabile b al di fuori della funzione, si verifica un errore.
let è Block Scoped
La let
parola chiave ha un ambito di blocco (è possibile accedere alla variabile solo nel blocco immediato).
Esempio 2: variabile con ambito di blocco
// program showing block-scoped concept // global variable let a = 'Hello'; function greet() ( // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') ( // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); ) // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c); ) greet();
Produzione
Hello World Hello World ciao Uncaught ReferenceError: x non è definito
Nel programma precedente, variable
- a è una variabile globale. È possibile accedervi ovunque nel programma.
- b è una variabile locale. È possibile accedervi solo all'interno della funzione
greet
. - c è una variabile con ambito di blocco. È possibile accedervi solo all'interno del
if
blocco di istruzioni.
Quindi, nel programma sopra, i primi due console.log()
funzionano senza problemi.
Tuttavia, stiamo tentando di accedere alla variabile con ambito di blocco c all'esterno del blocco nel terzo blocco console.log()
. Questo genererà un errore.
Nota : in JavaScript, ha l' var
ambito della funzione e l'ambito del let
blocco. Se si tenta di utilizzare var c = 'hello';
all'interno if
dell'istruzione nel programma sopra, l'intero programma funziona, poiché c è trattata come una variabile locale.
Per ulteriori informazioni sul let
versus var
, visita JavaScript let vs var.