Sobes.tech
Junior

¿Qué es el hosting de JavaScript?

sobes.tech AI

Respuesta de la IA

El hosting de JavaScript (o hosting de JavaScript) se refiere al comportamiento del compilador de JavaScript en el que las declaraciones de variables y funciones se "elevan" al inicio de su ámbito de alcance antes de ejecutar el código.

Puntos clave:

  • Solo se elevan las declaraciones, no las inicializaciones. Esto significa que puedes usar una variable o función antes de que esté declarada en el código, pero el valor de la variable antes de su inicialización será undefined.
  • Comportamiento separado para var, let/const y declaraciones de funciones.
    • var: Las declaraciones se elevan y se inicializan con el valor undefined al inicio del ámbito de alcance.
      console.log(miVar); // undefined
      var miVar = 10;
      
    • let y const: Las declaraciones se elevan, pero no se inicializan. Acceder a ellas antes de la inicialización provoca un error ReferenceError (zona temporal de muerte - Temporal Dead Zone).
      // console.log(miLet); // ReferenceError: cannot access 'miLet' before initialization
      let miLet = 20;
      
    • Declaraciones de funciones: Toda la declaración de la función (nombre y cuerpo) se eleva. La función puede ser llamada antes de su declaración en el código.
      miFuncion(); // "hola"
      function miFuncion() {
        console.log("hola");
      }
      
    • Expresiones de funciones: Solo se eleva la variable (var, let o const) a la que se asigna la función. La función no puede ser llamada antes de la asignación.
      // miFuncExp(); // TypeError: miFuncExp no es una función (si se declara con var)
      // miFuncExp(); // ReferenceError: cannot access 'miFuncExp' before initialization (si se declara con let/const)
      var miFuncExp = function() {
        console.log("mundo");
      };
      

Comprender el hosting es importante para evitar comportamientos inesperados y errores en el código. El uso de let y const ayuda a hacer el comportamiento de las declaraciones de variables más predecible.