Hoisting JavaScript

Il sollevamento (Hoisting) è il comportamento predefinito di JavaScript che sposta le dichiarazioni in alto.

Le dichiarazioni di JavaScript vengono sollevate

In JavaScript, è possibile dichiarare una variabile dopo averla utilizzata.

In altre parole, si può usarla prima della sua dichiarazione.

Esempio 1 ConEsempio 2 I risultati sono gli stessi:

Esempio 1

x = 5; // Assegna 5 a x
elem = document.getElementById("demo"); // Trova l'elemento
elem.innerHTML = x;                     // Mostra x nell'elemento
var x; // Dichiarazione di x

Prova a te stesso

Esempio 2

var x; // Dichiarazione di x
x = 5; // Assegna 5 a x
elem = document.getElementById("demo"); // Trova l'elemento
elem.innerHTML = x;                     // Mostra x nell'elemento

Prova a te stesso

Per comprendere questo, devi comprendere il termine "sollevamento".

Il sollevamento (Hoisting) è il comportamento predefinito di JavaScript che solleva tutte le dichiarazioni all'inizio dell'ambito corrente (all'inizio dello script o della funzione corrente).

le parole chiave let e const

usare let o const Le variabili dichiarate e le costanti non vengono sollevate!

Per favore JS Let / Const Leggi di più su let e const in questo articolo.

L'inizializzazione di JavaScript non viene sollevata

JavaScript solleva solo le dichiarazioni, non l'inizializzazione.

Esempio 1 ConEsempio 2 I risultati sono diversi:

Esempio 1

var x = 5; // Inizializzare x
var y = 7; // Inizializzazione di y
elem = document.getElementById("demo"); // Trova l'elemento
elem.innerHTML = x + " " + y;           // Mostra x e y

Prova a te stesso

Esempio 2

var x = 5; // Inizializzare x
elem = document.getElementById("demo"); // Trova l'elemento
elem.innerHTML = x + " " + y;           // Mostra x e y
var y = 7; // Inizializzazione di y 

Prova a te stesso

L'ultimo esempio, y è ancora non definito, ha senso?

Questo è perché solo la dichiarazione (var y) e non l'inizializzazione (=7) vengono sollevate in alto.

Grazie al hoisting, y è stata dichiarata prima del suo utilizzo, ma poiché l'inizializzazione non è stata sollevata, il valore di y è ancora non definito.

Anche l'esempio 2 è lo stesso:

Esempio

var x = 5; // Inizializzare x
var y;     // Dichiarare y
elem = document.getElementById("demo"); // Trova l'elemento
elem.innerHTML = x + " " + y;           // Mostra x e y
y = 7;    // Assegna 7 a y

Prova a te stesso

Dichiarare le tue variabili in alto!

Il hoisting (per molti sviluppatori) è un comportamento sconosciuto o trascurato di JavaScript.

Se i sviluppatori non comprendono il hoisting, il programma potrebbe contenere bug (errori).

Per evitare bug, dichiarare sempre tutte le variabili all'inizio di ogni ambito.

Poiché questo è il modo in cui JavaScript interpreta il codice, mantieni questa buona abitudine.

Il modo Stricto JavaScript non permette l'uso di variabili non dichiarate.

Continua a leggere il prossimo capitolo:use strict