English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In JavaScript, indipendentemente da dove sono definite, tutte le dichiarazioni di variabili e funzioni vengono spostate o sollevate alla cima dell'ambito corrente. Questo è il comportamento predefinito dell'interprete JavaScript e si chiamasollevamento (hoisting).
Le funzioni definite con dichiarazione di funzione vengono sollevate automaticamente.
Questo significa che possono essere chiamate prima della loro definizione.
// Chiamata della funzione prima della sua dichiarazione greet(); function greet() { document.getElementById("output").innerHTML = "Hello World"; }Prova a vedere < / >
Come vedete, abbiamo chiamato la funzione prima della sua definizione:greet()funzione, ma il codice è ancora valido. Questo è perché le dichiarazioni di funzione vengono sollevate automaticamente in alto in background.
Il sollevamento è il comportamento predefinito di JavaScript che sposta le dichiarazioni in alto.
JavaScript solleva solo le dichiarazioni, non l'inizializzazione. Se si dichiara e inizializza una variabile dopo averla utilizzata, il valore sarà incerto.
document.write(num); // undefined var num; num = 50;Prova a vedere < / >
Se si dichiara una variabile dopo averla utilizzata, ma si è inizializzata in anticipo, restituirà questo valore:
num = 50; document.write(num); // 50 var num;Prova a vedere < / >
usareletoconstVariabili e costanti non dichiarate.
JavaScript solleva solo le dichiarazioni, non l'inizializzazione.
Le seguenti due esempi producono risultati diversi:
var x = 1; // Inizializzazione x var y = 2; // Inizializzazione y document.write(x + " " + y); // 1 2Prova a vedere < / >
var x = 1; // Inizializzazione x document.write(x + " " + y); // 1 undefined var y = 2; // Inizializzazione yProva a vedere < / >
InEsempio 2:Solamente la dichiarazione (var y) e non l'inizializzazione (= 2) vengono elevate in alto.
Grazie all'elevamento, y è stata dichiarata prima di essere utilizzata, ma il suo valore non è definito a causa dell'inizializzazione non elevata.
L'esempio sopra è implicitamente interpretato come:
var x; // Dichiarazione x var y; // Dichiarazione y // Fine dell'elevamento. x = 1; // Inizializzazione x document.write(x + " " + y); // 1 undefined y = 2; // Inizializzazione yProva a vedere < / >
L'elevamento (Hoisting) è un comportamento sconosciuto o ignorato di JavaScript.
Se non conosci l'elevamento (Hoisting), il programma potrebbe contenere errori.
Per evitare errori, dichiara sempre tutte le variabili all'inizio di ogni scope.
Attenzione:In modalità strict, JavaScript non consente l'uso di variabili non dichiarate.
Scopri di più su "use strict" nel prossimo capitolo.