¿Cuál es la diferencia entre Var y Let?

por , en la categoría de javascript
3 minuto(s) de lectura

Introducción

Los nuevos estándares de Javascript han traído nuevas características y funcionalidades que están cambiando la forma en como este lenguaje ha sido concebido, tanto así que Typescript prácticamente ha revolucionado la forma en como estamos programando en Javascript; sí, ya sabemos que Typescript al final es código javascript escrito de otra forma y que al final, la traducción de este nos dá puro JS nativo. Sin embargo, poder crear tipos, interfaces, clases, poder encapsular atributos y métodos es algo que hace unos años atrás, era mas complicado de hacer con Javascript.

Con ES2015, llegó algo que sin duda es tremendamente potente, una nueva forma de declarar variables, que se asemeja mucho más a los lenguajes de programación tradicionales. Con esta nueva característica, podremos declarar variables cuyo alcance sea local, sin afectar variables globales y, al ser su alcance local, su ciclo de vida empieza y termina en determinado bloque.

Pero entonces, ¿Cuál es la diferencia entre declarar una variable con var y con let?

Cuando hacemos uso de var, la variable podrá ser accedida a lo largo de toda la función, mientras que con let, la variable solo tendrá alcance dentro del bloque donde fue definida. Miremos algunos ejemplos.

function esFinDeMes() {
    var mensaje = "Hola"
    var dias = 30
    var response = false;
    // hace referencia a la variable global dias
    if (dias === 30) {
        // Una variable distinta a la variable mensaje.
        let mensaje = "Adiós";
        // Una variable distinta a la variable global dias.
        let dias = 0;

        let diasAsString = dias.toString();
        // La misma variable response, definida globalmente
        var response = true;
        console.log(mensaje); // Mostrará por consola 'Adiós';
        console.log(dias); // Mostrará por consola 0;
        console.log(response) // "Mostrará por consola true"
    }

    /**
    Luego de que cerramos esta llave, el bloque del if finaliza, 
    y con el, las variables mensaje y dias, definidas dentro de
    este bloque, mueren:
    **/

    console.log(mensaje); // "Mostrará por consola Hola"
    console.log(dias); // "Mostrará por consola 2
    console.log(response); // "Mostrará por consola true"
    // Obtendremos un ReferenceError: diasAsString no está definido
    console.log(diasAsString);
}

Cuando usamos let, podemos obtener algunas errores, en el ejemplo podemos apreciar que cuando queremos acceder a una variable que no está definida, entonces obtendremos un ReferenceError, cosa que no pasa si la variable fue declarada con var, donde obtendremos como resultado undefined. Otro error que puede ocurrir, es definir dos variables con el mismo nombre, usando let, por ejemplo;

let saludo;
let saludo; // SyntaxError

// O bien:
let saludo;
var saludo; // SyntaxError

También podemos usar la definición con let en bucles, por ejemplo:

for (let i = 0; i<20; i++) {
  console.log(i); // 0, 1, 2, 3, 4 ... 19
}

console.log(i); // ReferenceError: i is not defined

Mas sobre let y var

Para un estudio más profundo sobre let, puedes hacer click acá

Conclusión

Espero que con este pequeño articulo haya quedado claro el comportamiento de las variables usando las palabras reservadas let y var, si tienes algún comentario al respecto, puedes dejarlo más abajo. Nos vemos después.

print("Hasta pronto")
Javascript, Fundamentos
comments powered by Disqus