Hoisting
Fenómeno de JS: las declaraciones de variables y funciones se «elevan» a la parte superior de su ámbito en tiempo de compilación.
var x se declara antes de que se ejecute el código, pero la asignación del valor ocurre donde está escrita. function f() se eleva por completo. let/const también se elevan (en la «TDZ», Temporal Dead Zone) pero no se pueden usar antes de su declaración. Trampa clásica de JS.