Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

154
Vistas
¿Por qué se permite que la variable sea accesible dentro de IIFE y var no?

Este código IIFE puede acceder al conteo

 let count = 0; (function immediate() { if (count === 0) { let count = 1; console.log(count); } console.log(count); })();

Pero, ¿por qué la cuenta no está definida en este caso?

 var count = 0; (function immediate() { if (count === 0) { var count = 1; console.log(count); } console.log(count); })();
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si usa var , la declaración de la variable se eleva, lo que significa que su código se reescribirá de la siguiente manera:

 var count = 0; (function immediate() { var count; // decalration of variable hoisted on the function scope // and the count variable now is undefined. if (count === 0) { count = 1; console.log(count); } console.log(count); // just this is printed. })();

Como puede ver, la variable dentro del bloque if ahora anula el conteo global.

El hecho de que este comportamiento no sea tan obvio es la razón por la que muchos sugieren evitar el uso de var , ya que podemos usar let y const en su lugar, que tienen un alcance de bloque.

Actualizar

Gracias al comentario de @t.niese, creo que es necesario mencionar otra diferencia entre var vs let y const .

Al igual que var , let y const se elevan, pero con estas diferencias:

  1. tienen un alcance de bloque y no un alcance de función como tiene var
  2. se declaran pero no se inicializan a undefined como var
  3. cualquier intento de acceder a una variable declarada con let y const antes de que se inicialice dará como resultado una excepción ReferenceError , mientras que acceder a una variable no declarada o a una var elevada devolverá simplemente undefined .
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda