Variabili e tipi in JavaScript

JavaScript: Variabili e Tipi
JavaScript: Variabili e Tipi

Hoisting: l’innalzamento delle variabili.

Un concetto molto importante in JavaScript è il cosiddetto hoisting o innalzamento della variabili.

L’innalzamento è detto così perché non importa in che ordine scriviamo il codice, le dichiarazioni delle variabili vengono sempre considerate in cima al blocco di codice che le contiene.

Questo significa che scrivendo questo codice:

var a = 1; var b = 2;

L’interprete JavaScript lo vedrà in questo ordine:

var a; var b; a = 1; b = 2;

Sembra un affare da poco, dopotutto abbiamo sempre due variabili, a e b, che contengono rispettivamente i valori 1 e 2, ma in alcuni casi questo può causare errori.

Quello che segue è un esempio di brutto codice, non copiatelo!

/// Creo una variabile x con un valore
var x = "Fuori dalla funzione";

/// Creo ed eseguo una funzione anonima
(function () {
  
  /// Dentro la funzione provo a stampare in console il valore di x
  console.log(x);

  /// Dentro la funzione dichiaro nuovamente la variabile x
  var x = "Dentro la funzione";
}());

/// Cosa comparirà in console?

Se pensi che nella console comparirà il messaggio Fuori dalla funzione sei in errore.

Se pensi che nella console comparirà il messaggio Dentro la funzione ti sbagli di grosso.

Il messaggio che compare in console è undefined!

Per effetto dell’hoisting le istruzioni JavaScript vengono eseguite in questo ordine:

/// Dichiaro una variabile x senza assegnare nessun valore
var x;

/// Provo a stampare il valore di x, ma non esiste
console.log(x);

/// Assegno un valore a x
x = "Dentro la funzione";

Il codice fuori dalla funzione non viene mai eseguito perché la variabile x dentro la funzione oscura la variabile x globale.

Questo esempio avrà più senso quando parleremo di funzioni e di Scope.

Questo articolo è parte della collana JavaScript: Guida di riferimento per aspiranti web developer.

Continua a leggere questa collana:

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.