Ambito delle variabili JavaScript (con esempi)

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:

  1. Ambito globale
  2. 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 apuò 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 letparola 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 ifblocco 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' varambito della funzione e l'ambito del letblocco. Se si tenta di utilizzare var c = 'hello';all'interno ifdell'istruzione nel programma sopra, l'intero programma funziona, poiché c è trattata come una variabile locale.

Per ulteriori informazioni sul letversus var, visita JavaScript let vs var.

Articoli interessanti...