JavaScript sollevamento
Il sollevamento è il comportamento predefinito di JavaScript per spostare le dichiarazioni in alto.
Le dichiarazioni JavaScript vengono sollevate
In JavaScript, una variabile può essere dichiarata dopo che è stata utilizzata.
In altre parole; una variabile può essere utilizzata prima che sia stata dichiarata.
L' esempio 1 dà lo stesso risultato dell'esempio 2 :
Esempio 1
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
var x; // Declare x
Esempio 2
var x; // Declare x
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
Per capirlo, devi capire il termine "sollevamento".
L'hoisting è il comportamento predefinito di JavaScript di spostare tutte le dichiarazioni all'inizio dell'ambito corrente (all'inizio dello script corrente o della funzione corrente).
Le parole chiave let e const
Le variabili definite con let
e const
vengono sollevate nella parte superiore del blocco, ma non inizializzate .
Significato: il blocco di codice è a conoscenza della variabile, ma non può essere utilizzato fino a quando non è stato dichiarato.
L'uso di una let
variabile prima che venga dichiarata risulterà in un file
ReferenceError
.
La variabile si trova in una "zona morta temporale" dall'inizio del blocco fino a quando non viene dichiarata:
Esempio
Ciò risulterà in unReferenceError
:
carName = "Volvo";
let carName;
L'uso di una const
variabile prima che venga dichiarata è un errore di sintassi, quindi il codice semplicemente non verrà eseguito.
Esempio
Questo codice non verrà eseguito.
carName = "Volvo";
const carName;
Leggi di più su let e const in JS Let/Const .
Le inizializzazioni JavaScript non vengono sollevate
JavaScript solleva solo dichiarazioni, non inizializzazioni.
L' esempio 1 non dà lo stesso risultato dell'esempio 2 :
Esempio 1
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
Esempio 2
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
var y = 7; // Initialize y
Ha senso che y non sia definito nell'ultimo esempio?
Questo perché solo la dichiarazione (var y), non l'inizializzazione (=7) viene sollevata in alto.
A causa del sollevamento, y è stato dichiarato prima di essere utilizzato, ma poiché le inizializzazioni non vengono sollevate, il valore di y non è definito.
L'esempio 2 equivale a scrivere:
Esempio
var x = 5; // Initialize x
var y; // Declare y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
y = 7; // Assign 7 to y
Dichiara le tue variabili al top!
Il sollevamento è (per molti sviluppatori) un comportamento sconosciuto o trascurato di JavaScript.
Se uno sviluppatore non comprende il sollevamento, i programmi potrebbero contenere bug (errori).
Per evitare bug, dichiara sempre tutte le variabili all'inizio di ogni ambito.
Poiché è così che JavaScript interpreta il codice, è sempre una buona regola.
JavaScript in modalità rigorosa non consente l'utilizzo di variabili se non sono dichiarate.
Studia "uso rigoroso" nel prossimo capitolo.