Botón para abrir el Menú Botón para cerrar el Menú
Logo da empresa Alura
Iniciar Sesión Nuestros Planes
Formaciones Conoce a Luri
  • Programación _
  • Front End _
  • Data Science _
  • DevOps _
  • Innovación y Gestión _
Artículos de Tecnología > Front-end

Hoisting en JavaScript

Luan Alves
Luan Alves
04/05/2023

Compartir

Mira este artículo:
  1. Para saber más

Cuando un equipo trabaja en un proyecto, es probable que el código será leído y cambiado por muchas personas, por lo que es necesário comprender las diferentes formas posibles de escribir un mismo código para que podamos obtener una buena productividad en el desempeño de su desarrollo.

Sin embargo, es importante que la persona desarrolladora comprenda qué es Hoisting y cómo se comporta en diferentes casos en este lenguaje.

Analicemos el código de declaración de función abajo y lo que devuelve:

console.log(suma(2,5))
function suma(a,b) {
	return a + b
}

Al verificar lo que tenemos en la consola, vemos que este código nos devolvió el valor de 7.

Tenga en cuenta que la función se puede llamar incluso antes de que se haya declarado, como se ha hecho con la función suma. Hoisting es el término que explica esta situación, en español significa "izar" o "elevar" y fue mencionado por la primera vez en ECMAScript® 2015 Language Specification. Hoisting le permite ejecutar funciones antes de sus declaraciones. En la práctica, las declaraciones de funciones se almacenan inicialmente en la memoria durante la fase de compilación y, aun así, permanecen en el mismo lugar donde se escriben.

La razón por la que funciona el código anterior es que los motores de JavaScript mueven la función suma a la parte superior del campo de aplicación, o escopo, como lo ilustra el siguiente código:

function suma(a,b){
    return a + b
}
console.log(suma(2,5))

Sin embargo, ¿Hoisting funciona en otros tipos de código? ¡Veamos!

Si intentamos usar el siguiente código, veremos que devuelve undefined en la consola:

console.log(alura) // undefined
var alura = ‘cursos’;

Esto sucede porque no se indica el uso de Hoisting en var, ya que la variable creada se eleva al escopo, pero sin su valor, y con eso, devuelve un valor indefinido.

El comportamiento es similar usando también la función con var:

function testaHoisting() {
    console.log(‘testaHoisting’, alura)
    var alura = ‘cursos’
}

Este código devuelve: undefined.

Hoisting tampoco se indica con let, ya que ocurre otro tipo de comportamiento no deseado:

console.log(alura)
let alura = ‘cursos’;

Este código nos devuelve un error:

script.js:1 Uncaught ReferenceError: Cannot access 'alura' before initialization

Este mensaje en español significa que “No es posible acceder a 'alura' antes de su inicialización”, es decir, el lenguaje JavaScript reconoce que let = alura existe, pero no puede acceder a su declaración. Este comportamiento de Hoisting con let es lo mismo que usar hoisting con const.

Para saber más

Después de leer este artículo, aprendió sobre una característica del lenguaje de programación Javascript. Para profundizar tus conocimientos, Alura puede ayudarte con eso, aprende más con nuestros cursos:

  • Lógica de programación: Primeros pasos
  • JavaScript: Introducción al lenguaje de la web
  • JavaScript: Consolide sus conocimientos en el lenguaje de la web
  • JS en la Web: Almacenando datos en el navegador

Este artículo fue escrito originalmente por Luan Alves y Mônica Hillman.

Traducido para Alura Latam por Nathalia Cardozo.

Luan Alves
Luan Alves

Sou Luan Alves, estudante de Análise e Desenvolvimento de Sistemas, instrutor de Desenvolvimento Front-End no Grupo Alura. Estou aqui para ajudar a tirar suas dúvidas, aprender e compartilhar conhecimento. :)

Artículo Anterior
¿Qué es JSON Web Token?
Siguiente Artículo
¿Qué es HTML y sus tags? Estructura básica

Ver otros artículos sobre Front-end

Navegación

  • Planes
  • Instructores
  • Blog
  • Política de privacidad
  • Términos de uso
  • Sobre nosotros
  • Preguntas frecuentes

¡CONTÁCTANOS!

  • ¡Quiero entrar en contacto!

Blog

  • Programación
  • Data Science
  • Front End
  • Innovación y Gestión
  • DevOps

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

NOVEDADES Y LANZAMIENTOS

Aliados

  • Programa de aceleração Scale-Up Endeavor
  • En Alura somos unas de las Scale-Ups seleccionadas por Endeavor, programa de aceleración de las empresas que más crecen en el país.
  • Growth Academy 2021 do Google For Startups
  • Fuimos unas de las 7 startups seleccionadas por Google For Startups en participar del programa Growth Academy en 2021
Alura

Powered by

Caelum

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

Cursos

Cursos de Programación
Lógica de Programación | Java
Cursos de Front End
HTML y CSS | JavaScript | React
Cursos de Data Science
Data Science | Machine Learning | Excel | Base de Datos | Data Visualization | Estadística
Cursos de DevOps
Docker | Linux
Cursos de Innovación y Gestión
Transformación Ágil | Marketing Analytics

Alura

  • Educação em Tecnologia

    • logo fiap FIAP
    • logo casa do codigo Casa do Código
    • logo pm3 PM3 - Cursos de Produto
  • Mais Alura

    • logo alura start START BY Alura
    • logo alura lingua Alura Língua
    • logo alura para empresas Alura Para Empresas
    • logo alura latam Alura LATAM
  • Comunidade

    • logo tech guide Tech Guide
    • logo 7 days of code 7 days of code
    • logo Hipsters ponto Jobs Hipsters ponto Jobs
  • Podcasts

    • logo Hipster Network Hipster Network
    • logo Hipsters ponto Tech Hipsters ponto Tech
    • logo Dev sem fronteiras Dev sem Fronteiras
    • logo Like a Boss Like a Boss
    • logo IA Sob Controle IA Sob Controle
    • logo Mesa de Produto Mesa de Produto
    • logo Decode Decode
    • logo FIAPCast FIAPCast