Skip to content

Latest commit

 

History

History
164 lines (134 loc) · 6.65 KB

zVarLetConst.md

File metadata and controls

164 lines (134 loc) · 6.65 KB

✨ Var, Let e Const 宣言 👾

Esse guia é nada mais de anotações sobre as aulas de Javascript da turma TI 24 feita por Matheus Dantas (O tal Dante) para colegas e aprendizados. Ao longo das aulas, terá uma source aberta no GitHub para acesso de códigos, exemplos e etc. (¬‿¬)

✨ Introdução 導入

No JavaScript, var, let e const são palavras-chave usadas para declarar variáveis, cada uma com suas particularidades. var é a forma mais antiga e tem escopo de função ou global, permitindo reatribuição e redeclaração. let e const, introduzidos no ECMAScript 2015 (ES6), trazem melhorias significativas: let tem escopo de bloco e permite reatribuição, enquanto const também tem escopo de bloco, mas é usada para constantes, não permitindo reatribuição. Essas distinções ajudam a escrever um código mais seguro e previsível.

💻 Declaração com var

    function exemploVar() {
    if (true) {
        var x = 10;
        console.log(x); // 10 - x está acessível aqui
    }
    console.log(x); // 10 - x ainda está acessível aqui devido ao escopo de função
    }

    exemploVar();

Características do var:

  • Escopo de função: a variável é acessível em toda a função onde foi declarada.
  • Permite redeclaração.
  • Permite reatribuição.
  • Hoisting: a declaração da variável é "elevada" ao topo do escopo, mas não a inicialização.

💻 Declaração com let

    function exemploLet() {
    if (true) {
        let y = 20;

        // y está acessível aqui
        console.log(y); //  imprimir 20 
    }

    // Uncaught ReferenceError: y is not defined
    console.log(y);  // y não está acessível fora do bloco
    }

    exemploLet();

Características do let:

  • Escopo de bloco: a variável é acessível apenas dentro do bloco onde foi declarada.
  • Não permite redeclaração no mesmo escopo.
  • Permite reatribuição.
  • Hoisting: a variável é "elevada" ao topo do escopo de bloco, mas não pode ser usada antes da linha de declaração.

💻 Características do const

    function exemploConst() {
    if (true) {
        const z = 30;
        console.log(z); // 30 - z está acessível aqui
    }
    // console.log(z); // Uncaught ReferenceError: z is not defined - z não está acessível fora do bloco
    }

    exemploConst();

Características do const:

  • Escopo de bloco: a variável é acessível apenas dentro do bloco onde foi declarada.
  • Não permite redeclaração.
  • Não permite reatribuição.
  • Hoisting: a variável é "elevada" ao topo do escopo de bloco, mas não pode ser usada antes da linha de declaração.

📚 Resumo das Diferenças

  • Escopo:

    • var: escopo de função.
    • let e const: escopo de bloco.
  • Redeclaração:

    • var: permitido.
    • let e const: não permitido no mesmo escopo.
  • Reatribuição:

    • var e let: permitido.
    • const: não permitido (const antes não podem ser reatribuídas).
  • Hoisting:

    • var: declarado no topo do escopo, inicializado como undefined.
    • let e const: declarados no topo do escopo de bloco, mas não inicializados até a linha de declaração (causando um ReferenceError se acessados antes da declaração).

Exemplos de Uso com Comentários:

    // Exemplo com var
    var a = 1;
    var a = 2; // Redeclaração permitida
    a = 3; // Reatribuição permitida
    console.log(a); // 3

    // Exemplo com let
    let b = 1;
    // let b = 2; // Uncaught SyntaxError: Identifier 'b' has already been declared - Redeclaração não permitida
    b = 2; // Reatribuição permitida
    console.log(b); // 2

    // Exemplo com const
    const c = 1;
    // const c = 2; // Uncaught SyntaxError: Identifier 'c' has already been declared - Redeclaração não permitida
    // c = 2; // Uncaught TypeError: Assignment to constant variable. - Reatribuição não permitida
    console.log(c); // 1
Esses exemplos ilustram claramente como usar var, let e const em diferentes situações e as regras associadas a cada um deles.

💻 Veja mais

💻 Contato 接触

😀 Se você tiver sugestões, feedback ou quiser colaborar em algum projeto, ficarei feliz em ouvir de você! 😁

Email Instagram X Discord