"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Let vs. Var em JavaScript: Qual é a diferença no escopo e no uso?

Let vs. Var em JavaScript: Qual é a diferença no escopo e no uso?

Publicado em 2024-12-26
Navegar:163

Let vs. Var in JavaScript: What's the Difference in Scope and Usage?

Let vs. Var em JavaScript: desmistificando escopo e zonas mortas temporais

Introduzida no ECMAScript 6, a instrução let gerou confusão entre os desenvolvedores , particularmente como ela difere da palavra-chave var estabelecida. Este artigo investiga as nuances entre essas duas declarações de variáveis, destacando suas regras de escopo e os melhores casos de uso.

Escopo

A distinção fundamental está em seu comportamento de escopo. As variáveis ​​declaradas com var são restritas à função em que estão definidas (escopo da função), enquanto as variáveis ​​let são confinadas ao bloco em que estão incluídas (escopo do bloco). Isso significa permitir que as variáveis ​​tenham um escopo muito mais restrito, evitando que interajam com variáveis ​​definidas fora de seu bloco imediato.

Exemplo:

function run() {
  var foo = "Foo";
  let bar = "Bar";

  console.log(foo, bar); // "Foo Bar"

  {
    var moo = "Mooo"
    let baz = "Bazz";
    console.log(moo, baz); // "Mooo Bazz"
  }

  console.log(moo); // "Mooo"
  console.log(baz); // ReferenceError
}

run();

No exemplo acima, a variável var moo permanece acessível mesmo fora de seu bloco, enquanto a variável let baz lança um ReferenceError quando acessada fora de seu bloco.

Temporal Zonas Mortas

Outra diferença são as zonas mortas temporais (TDZ). Para variáveis ​​let, existe um TDZ desde o ponto de declaração até o final do bloco em que estão definidas. Durante este período, acessar uma variável let sem inicialização resulta em um ReferenceError.

Exemplo :

function test() {
  console.log(foo); // ReferenceError
  let foo = "Bar";
}

test();

Neste código, acessar a variável let foo antes de ser inicializada resulta em um ReferenceError por causa do TDZ.

Quando usar Let vs.

Em geral, prefira usar let para variáveis ​​dentro de blocos para evitar poluir o escopo global e evitar colisões de nomes de variáveis. Var ainda é útil para variáveis ​​que precisam estar acessíveis em vários blocos ou funções.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3