Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

var e let

Bom, como já vi vários cursos do Alura, em um o Flávio diz para tomar como hábito o uso do let e ao ver o segundo vídeo da aula 5, realmente fiquei em dúvida, qual a vantagem do let para o var, caso haja e quando devo usar um ou outro, alguém poderia me explicar?

Desde já agradeço.

3 respostas

O ideal é usar o let mesmo.. pq ele define o escopo da variável apenas para o bloco onde foi criado. Na verdade, é assim que deveria ser sempre.. imagina que com var vc declara uma variável dentro de um bloco de if e ela continua existindo fora do bloco, apesar de pelo menos ficar restrita a função.

solução!

Olá, Gustavo! Tranquilo? =)

Acredito que a principal diferença entre let e var é referente à escopo, mas não é a única. Dando uma pesquisada, encontrei uma resposta que possa lhe servir, está no StackOverflow...

Basicamente as diferenças são as seguintes:

1 - Variáveis globais: vamos criar ambas variáveis globais, ou seja, fora de qualquer bloco:

var a = "Variável com var";
let b = "Variável com let";

Ambos são globais, mas somente a declaração com var atribuirá a variável como atributo do objeto window.

console.log(window.a); // Variável com var
console.log(window.b); // undefined

2 - Variáveis dentro de uma função: após criá-las dentro de funções, ao invés de globais, elas existirão somente ali dentro, de forma semelhante:

function funçao() {
    var a = "Variável com var";
    let b = "Variável com let";
}

3 - Variáveis dentro de um bloco: agora vamos criá-las dentro de um bloco for dentro de uma função...

function funcao() {
    for(var a = 0; a < 10; a++) {
        // Variável a existe aqui...
    }

    // Variável a também existe aqui...
}

function funcao2() {
    for(let b = 0; b < 10; b++) {
        // b existe aqui...
    }

    // Variável b não existe aqui!
}

Repare na diferença! Ao usarmos var, a variável passa a existir dentro da função toda, não somente no bloco em que foi criada (for). Quando usamos let não, ela só existe dentro do bloco!

E a última diferença, que eu não conhecia... Hehehe!

4 - use strict: Ao usarmos o strict mode, a redeclaração é possível para var, mas não para let:

"use strict";
var a = "Olá"; // Variável a declarada com valor "Olá"...
var a = "Oi"; // Variável a substituída pelo valor "Oi"...

let b = "Hello"; // Variável b declarada com valor "Hello"...
let b = "Hi"; // Deu ruim!

Basicamente essas são as diferenças entre um e outro, além da compatibilidade. =)

Espero ter ajudado, mas qualquer dúvida que ainda possa ter restado não deixe de postar aqui para podermos ajudá-lo! =)

Abraço e bons estudos,

Fábio

Opa, show de bola ambas as explicações, ambas as questões tiram a minha dúvida do vídeo, pois no vídeo a declaração da variável do tipo var dentro de uma função não funcionou na outra (o que eu imaginei que funcionaria), como a segunda resposta está mais completa, caso alguém venha visitar o tópico marquei como solução. Obrigadão pessoal.