¿Cuál es la diferencia entre usar let y var en JavaScript?

¿Cuándo debería usar let over var? ¿Y por qué? ¡Vamos a averiguar!

En JavaScript moderno tenemos 3 formas de declarar una variable y asignarle un valor:

  • const
  • let
  • var

Cuando trabajo con variables en JavaScript, siempre uso de forma predeterminadaconst. Garantiza que el valor no se puede reasignar y, por lo tanto, es más seguro de usar.

Pero cuando necesito volver a declarar una variable más adelante, siempre usolet.

No he usadovaren años, y para mí solo está ahí para propósitos de compatibilidad con versiones anteriores, y siempre levanto una ceja cuando lo veo usado.

¿Por qué?

Primero,letposeealcance sensato.

El mismo alcance que se usa en más o menos todos los lenguajes de programación populares, alcance de bloque, dicta que las variables declaradas usandolettienen el alcance al bloque más cercano.

varen cambio, es un poco más extraño, ya que tiene función de alcance, lo que significa que las variables declaradas usandovartienen el alcance de la función más cercana.

Esto tiene implicaciones prácticas. Por ejemplo, una variable se declara dentro de unifo usado como elforiterador de bucle. UsandoletLo hace local a esas 2 cuadras. Usandovar, sin embargo, permite que la variable esté disponible fuera de ese bloque, lo que podría provocar errores.

Utilice siempre la herramienta que le proporcione la menor cantidad de energía para asegurarse de tener el máximo control sobre ella.Con un gran poder viene una gran responsabilidad.

Otra razón para preferirleteslevantando. Me gustaconst,letlas variables no se elevan, pero se inicializan cuando se evalúan.

varen cambio, las variables se elevan a la parte superior de la función y, como tales, están disponibles incluso en las líneasantes desu declaración. Extraño, ¿verdad?

Tercera razón: cuando declaras unletvariable con el mismo nombre que una que ya existe, obtiene un error (enModo estricto).

Finalmente, otra gran diferencia: si declaras unvarvariable fuera de cualquier función, se asigna a laobjeto global, lo que significawindowdentro del navegador.letno funciona de esta manera; la variable está disponible, pero no adjunta al objeto global, por lo que no es accesible desde fuera de su archivo.


Más tutoriales de js: