¿Qué es el Hoisting en JavaScript?

El "hoisting" en JavaScript es un comportamiento que ocurre durante la fase de compilación (o interpretación) del código, en la cual las declaraciones de variables y funciones son movidas (elevadas) al comienzo del ámbito en el que están declaradas. Esto significa que las declaraciones de variables y funciones son procesadas antes de que se ejecute cualquier parte del código.

El hoisting se aplica a las siguientes declaraciones:

  1. Declaraciones de variables (var): Las variables declaradas con var son elevadas al comienzo de su ámbito (por ejemplo, una función o el ámbito global). Sin embargo, solo la declaración de la variable se eleva, no su asignación.
    Ejemplo:
    console.log(miVariable); // undefined
    var miVariable = 10;


    El código anterior se comporta como si fuera interpretado de la siguiente manera:
    var miVariable;
    console.log(miVariable); // undefined
    miVariable = 10;


  2.  Declaraciones de funciones: Las declaraciones de funciones también se elevan al comienzo de su ámbito, lo que significa que puedes llamar a una función antes de que se declare en el código.
    Ejemplo:
    saludar(); // "Hola"

    function saludar() {
      console.log("Hola");
    }

    El código se interpreta como si fuera:
    function saludar() {
      console.log("Hola");
    }

    saludar(); // "Hola"

 Es importante tener en cuenta que el hoisting solo aplica a las declaraciones, no a las inicializaciones o asignaciones. Las variables declaradas con var son inicializadas con undefined por defecto, mientras que las funciones declaradas se conservan en su totalidad.

Sin embargo, el hoisting puede ser fuente de errores sutiles y comportamientos inesperados en el código, por lo que es una buena práctica declarar y asignar variables al comienzo de su ámbito y evitar depender en exceso del hoisting para mantener el código claro y legible. En versiones modernas de JavaScript, se recomienda utilizar let y const en lugar de var, ya que tienen un comportamiento de hoisting más predecible.

Comentarios