2
respostas

Declaração de variável

Eu pensei que declarava variável com o termo (let) e não do termo (const)

2 respostas

Oi, Thiago! Tudo bem?

Então, as duas formas estão corretas mas os tipos de declarações são usadas em contextos diferentes. Vamos aos casos:

var

São as variáveis de escopo global. O que isso quer dizer? Bem, escopo basicamente significa onde essas variáveis poderão ser utilizadas. O escopo é global quando uma variável var é declarada fora de uma função. Mas essa variável declarada com var também pode ser declaradas dentro de função, neste caso diz-se que ela tem escopo de função ou local. Exemplo:

var saudacaoOi = "Oi";

    function saudacao() {
        var saudacaoOla = "Olá";
    }

No exemplo acima a variável saudacaoOi tem escopo global, enquanto que a variável saudacaoOla tem escopo de função. Se você der um console.log(saudacaoOla) vai receber um erro, pois ela não está definida fora do escopo da função.

Ponto de atenção

Deve-se ter muito cuidado em utilizar a declaração var. Exemplo:

var saudacaoOi = "Oi";
    var numero = 4;

    if (numero > 3) {
        var saudacaoOi = "Oi, fulano"; 
    }

    console.log(saudacaoOi) // o resultado será "Oi fulano"

Isso acontece porque variáveis declaradas com var podem ser atualizadas e reatribuídas, podendo gerar casos como esse.

let

As declarações do tipo let são uma espécie de upgrade das declarações do tipo var. Elas resolvem o problema do var que citamos acima.

Variáveis do tipo let tem escopo de bloco. O que é isso? Podemos entender por bloco qualque trecho de código entre chaves ({}). Assim, uma váriavel let estará disponível somente dentro daquele bloco. Exemplo:

let saudacao = "Olá";
let numero = 4;

    if (numero > 3) {
        let saudacaoOi = "Oi, fulano"; 
        console.log(saudacaoOi); // o resultado será "Oi fulano"
    }

    console.log(saudacaoOi) // o resultado será um erro informando que a váriável saudacaoOi não está definida

As variáveis let podem ser atualizadas mas não declaradas novamente dentro do seu escopo. Pórem se os escopos forem diferentes, aí não tem problema. Exemplo:

// pode ser atualizada mas não declarada novamente

let saudacao = "Olá";
saudacao = "Olá mundo";
// se declarada a mesma variável em escopos diferentes não há problema, pois as instâncias são diferentes.

let saudacao = "Olá";

    if (true) {
        let saudacao = "Olá, fulano"; 
        console.log(saudacaoOi); // o resultado será "Olá, fulano"
    }

    console.log(saudacao) // o resultado será "Olá"

const

Por fim, as declarações do tipo const mantém os valores constantes. Possuem escopo de bloco assim como as declarações let , e só podem ser acessadas neste escopo.

Porém, diferente das delarações let as declarações const não podem ser atualizadas nem declaradas novamente. Isso significa que o valor de uma variável const se mantém constante dentro do seu escopo. Exemplo:

// isso não é possível fazer
const saudacao = "Olá";
const saudacao = "Olá mundo";
// isso não é possível fazer
const saudacao = "Olá";
saudacao = "Olá mundo";

Portanto, cada variável do declarada como const deve ser inicializada no momento da declaração.

Puxa, muita informação né?

Se você quiser seguir uma trilha de estudos focada em dominar o JavaScript e conhecer ali um superset dessa linguagem que tá bem popular, o Typescript. Eu vou deixar o link da que eu criei bem abaixo:

Abraços e bons estudos!

Obrigado pela informação amigo, grato!