English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base JavaScript

Oggetto JavaScript

Funzione JavaScript

DOM HTML JS

BOM del browser JS

Tutorial di base AJAX

Manuale di riferimento JavaScript

Elevazione (Hoisting) di JavaScript

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).

Sollevamento di funzione (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

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.

Inizializzazione JavaScript non sollevata

JavaScript solleva solo le dichiarazioni, non l'inizializzazione.

Le seguenti due esempi producono risultati diversi:

Esempio 1:
var x = 1; // Inizializzazione x
var y = 2; // Inizializzazione y
document.write(x + " " + y); // 1 2
Prova a vedere < / >
Esempio 2:
var x = 1; // Inizializzazione x
document.write(x + " " + y); // 1 undefined
var y = 2; // Inizializzazione y
Prova 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 y
Prova a vedere < / >

Dichiara sempre le variabili in alto

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.