Hoisting
Zjawisko w JS: deklaracje zmiennych i funkcji są podczas kompilacji „wynoszone" na początek swojego zakresu.
var x jest zadeklarowane, zanim kod się uruchomi, ale przypisanie wartości następuje tam, gdzie je napisano. function f() jest wyniesiona w całości. let/const też są wynoszone (do „TDZ" — Temporal Dead Zone), lecz nie można ich użyć przed deklaracją. Klasyczna pułapka JS.