Hoisting
Fenomeno di JavaScript: le dichiarazioni di variabili e funzioni vengono «sollevate» in cima al proprio scope in fase di compilazione.
var x è dichiarata prima dell'esecuzione del codice, ma l'assegnazione avviene dove è scritta. function f() viene sollevata per intero. Anche let e const sono sollevate (nella «TDZ», Temporal Dead Zone), ma non si possono usare prima della dichiarazione. Un classico tranello di JS.