Principal Diferença entre "LET" e "VAR" na Declaração de Variáveis em JavaScript
Principal Diferença entre "LET" e "VAR" na Declaração de Variáveis em JavaScript
Olá pessoal! Vou citar e exemplificar abaixo a principal diferença que entendi existir entre os dois tipos de declarações. Espero que gostem!
Uma das principais diferenças entre var e let está no escopo das variáveis. O "escopo" em programação se refere à região do código onde uma determinada variável é visível e acessível. Dito isto, vamos a especificação e exemplificação de seu uso em lógica de programação.
I. O var tem um escopo de função, o que significa que a variável declarada com var é acessível em toda a função em que foi declarada.
II. O let tem um escopo de bloco, o que significa que a variável declarada com let só é acessível dentro desse bloco e em blocos filhos aninhados (blocos de código que estão contidos dentro do bloco em questão), mas não fora do bloco em que foi declarada (entenda bloco como "chaves").
Essa diferença de escopo é facilmente notada em laços de repetição:
for (var i = 0; i < 3; i++) {
console.log("VAR: " + i);
}
console.log("Fora do loop VAR: " + i);
Nesse caso, a saída será:
VAR: 0
VAR: 1
VAR: 2
Fora do loop VAR: 3
Observe que a variável i é acessível fora do loop, mesmo após seu término, devido ao escopo do var, que é mais global, o de função. E também que há o incremento ao final do ultimo loop, transformando VAR em 3, que posteriormente faz com que não execute o próximo loop.
Agora, veja a diferença de comportamento do let:
for (let j = 0; j < 3; j++) {
console.log("LET: " + j);
}
console.log("Fora do loop LET: " + j);
Nesse caso, a saída será:
LET: 0
LET: 1
LET: 2
Uncaught ReferenceError: j is not defined
Aqui, a variável j não é acessível fora do loop devido ao escopo de bloco do let. Tentar acessá-la fora do loop resultará em um erro. Isso ocorre devido ao escopo do let, que evita que a variável seja acessada fora de seu escopo. Por isso a mensagem de erro: Uncaught ReferenceError: j is not defined, que traduzindo ao pé da letra fica: "não detectado, erro de referência: j não está definido". Portanto, ao declarar variáveis em loops, é aconselhável optar pelo let, para utiliza-lo somente ali naquele bloco.
E vocês, encontraram outras diferenças e outros usos entre os dois tipos de declaração? Comentem ai abaixo também se eu cometi algum equivoco no meu texto. Abraço!
Matheus V. Zarpellon @matheuszarpellonMuito bem explicado, e é por isso que não se recomenda o uso de var, segurança. Você pode correr o risco de alterar uma informação que não deveria, aí quebra a sua aplicação, você chora no banho, e até descobrir o que houve, corrigir? Boa sorte.
Matheus Panobianco @matheus_panobiancoÉ verdade. Porém, o let me deixa um pouco mais confuso por altera o valor e depois essa alteração sumir. Mas acredito que com o tempo fique mais fácil utilizar e não se perder.
Em resposta amatheus_panobianco⬆:marcelo jhones @MarceloJhonesDevcomo já foi explicado pelos colegas não se utiliza mais var em nas aplicações atualmente pois há diversos problemas de segurança. A única razão para se usar var como esse artigo da documentação do mozila informa é se vc tiver dando manutenção em softwares bem antigas que rodam no Internet Explorer com seu código (ele não suporta let até a versão 11; o navegador mais moderno do Windows, o Edge, suporta let).
link do artigo: https://developer.mozilla.org/pt-BR/docs/Learn/JavaScript/First_steps/Variables
Matheus Panobianco @matheus_panobiancoEu não sabia que não utilizavam mais. Mas faz todo sentido.
Em resposta amatheus_panobianco⬆:Natália Stoll Nogueira @nataliastollMuito bom, esclareceu bastante. Obrigada.
Em resposta amatheus_panobianco⬆:Eveliny Cavalcante Muniz @eveliny_muniz**perfeito, obrigada pela explicação com certeza esclareceu minha duvida. **
Em resposta amatheus_panobianco⬆:Christian Amsberg Janner @calemaoUau, isso é incrível! Sua explicação é tão clara, obrigado! Melhorou meu estudo.
Em resposta amatheus_panobianco⬆:Antônio Agamenon Maciel Chaves Júnior @AgamenonNossa @matheus_panobianco ficou muito bom, parabéns pelo esforço!
Em resposta amatheus_panobianco⬆:Brenda Azevedo @brendaazevedoBem explicado, vou optar em usar o let. Obrigada Matheus!
Em resposta amatheus_panobianco⬆:Ana Karolina Souza @anakarolinaMuito bom, é melhor já irem se acostumando a usarem o let, porque faz toda a diferença.