Qué es el Hoisting en JavaScript

En este momento estás viendo Qué es el Hoisting en JavaScript
  • Autor de la entrada:
  • Categoría de la entrada:Javascript
  • Tiempo de lectura:5 minutos de lectura

Hoisting (elevación) es un concepto importante en JavaScript que puede resultar confuso para muchos desarrolladores. En este tutorial, vamos a explicar qué es el hoisting, cómo funciona y cómo afecta a nuestro código JavaScript.

¿Qué es el Hoisting?

El hoisting es un comportamiento especial en JavaScript en el que las declaraciones de variables y funciones se mueven al principio de su scope actual antes de que se ejecute el código. Esto significa que podemos utilizar variables y funciones antes de declararlas explícitamente en nuestro código.

El hoisting ocurre en dos etapas durante la ejecución del código JavaScript:

  1. Hoisting de variables: Todas las declaraciones de variables (usando var) se elevan al principio del scope actual, manteniendo su asignación inicial como undefined. Esto significa que podemos acceder a estas variables antes de que se declaren en el código.
  2. Hoisting de funciones: Todas las declaraciones de funciones (tanto las declaraciones de función como las expresiones de función) se elevan al principio del scope actual. Esto significa que podemos utilizar una función antes de declararla en el código.

Es importante tener en cuenta que solo las declaraciones de variables y funciones son «elevadas», no sus asignaciones o inicializaciones.

Ejemplo de Hoisting en Variables:

console.log(miVariable); // undefined
var miVariable = 10;
console.log(miVariable); // 10

En este ejemplo, la variable miVariable es «elevada» al principio del scope, por lo que podemos acceder a ella antes de que se declare explícitamente. Sin embargo, su valor antes de la declaración es undefined.

¿Qué es el hoisting de funciones?

El hoisting de funciones es un comportamiento único en JavaScript en el que se elevan las declaraciones de las funciones hasta la parte superior del scope o ámbito actual antes de que se ejecute el código. Como resultado, podemos utilizar una función antes de declararla explícitamente en nuestro código.

Hay dos tipos de declaración de funciones en JavaScript: la declaración de función y la expresión de función.

  • Declaraciones de funciones: Las funciones declaradas con la sintaxis de declaración de función son elevadas al principio del scope o ámbito actual durante la fase de compilación.
miFuncion(); // "Hola Mundo"

function miFuncion() {
  console.log("Hola Mundo");
}

En este ejemplo, la función miFuncion es declarada usando la sintaxis de declaración de función. Como resultado, la función es hoisteada al principio del scope y podemos llamarla antes de declararla explícitamente en el código.

  • Expresiones de funciones: Las funciones declaradas con la sintaxis de expresión de función no son hoisteadas durante la fase de compilación. En cambio, se evalúan durante la fase de ejecución.
miFuncion(); // TypeError

var miFuncion = function () {
  console.log("Hola Mundo");
};

En este ejemplo, la función miFuncion es declarada como una expresión de función. Como resultado, no es hoisteada al principio del scope y no podemos llamarla antes de declararla explícitamente en el código. De hecho, si intentamos llamar a la función antes de declararla, nos dará un TypeError.

Precauciones y buenas prácticas:

Aunque el hoisting puede ser útil en ciertos casos, también puede llevar a errores y comportamientos inesperados si no se comprende correctamente.

A continuación, se presentan algunas precauciones y buenas prácticas relacionadas con el hoisting:

  • Siempre declare las variables y funciones antes de utilizarlas. Aunque el hoisting permite usarlas antes de declararlas, es una buena práctica poner todas las declaraciones en la parte superior del scope para evitar confusiones y errores.
  • Utilice let y const en lugar de var. A diferencia de var, let y const tienen un comportamiento de hoisting más controlado. Declaraciones de let y const no son elevadas al principio del scope, lo que evita problemas comunes asociados al hoisting con var.
  • Evite el uso de funciones anónimas. Si necesita asignar una función a una variable, utilice expresiones de función en lugar de declaraciones de función. Las expresiones de función no son hoisteadas y se evalúan en tiempo de ejecución.
Artículos Relacionados
Orlando José-Rivera
Últimas entradas de Orlando José-Rivera (ver todo)

Deja una respuesta