Antes de ejecutar un ámbito, JavaScript prepara sus declaraciones. Las funciones declaradas suelen estar disponibles antes de su línea; una variable let o const no puede leerse antes de inicializarse.
Ejemplo
JavaScript · Ámbito
console.log(saludar()); // Hola
function saludar() { return 'Hola'; }
// console.log(valor); // ReferenceError (TDZ)
const valor = 3;Evita esta confusión
Hoisting no significa que todas las declaraciones tengan el mismo comportamiento. let y const tienen zona muerta temporal (TDZ).