Entendendo a diferença entre var e let em JavaScript

Entendendo a diferença entre var e let em JavaScript

27/05/2018 2 Por Alisson Suassuna

Olá galera, hoje vamos compreender a diferença entre var e let, a palavra reservada let foi implementada na versão ECMAScript 2015 já faz um tempo desde do seu lançamento, porém muitos programadores ainda tem dúvidas sobre, então vamos esclarecer de uma vez por todas e assimilar as novas formas de declarações de variáveis no javascript.

Declarando com var

Aqui estou declarando uma variável com o nome (nota1) esse nome é um identificador da variável, ou seja, quando formos fazer manipulações com essa variável iremos chama-la (nota1) onde o valor será 4

Declarando com let

Aqui acontece a mesma atribuição explicado acima, porém a primeira mudança que notamos foi a substituição da palavra var por let, mas não é só essa a diferença vamos fazer alguns testes para observar na prática essas mudanças e explicar os motivos dela.

Vamos ao código – diferença entre var e let

Executando esse código será apresentado o seguinte erro
SyntaxError: Identifier: ‘b’ has already been declared
Aqui ele está me dizendo o seguinte: Meu jovem lindo, a variável b já foi declarada, e não poder ser declarada novamente. Note que ele não reclamou da variável a.

Vamos refazer o código sem o let

Veja que quando trabalhamos com a palavra reservada var para declarar nossas variáveis, podemos redeclarar uma variável duas vezes no mesmo escopo, isso não acontece em outras linguagens. Quando usamos a palavra let essa “peculiaridade” não ocorre, para que possamos entender mais a fundo as diferenças entre let e var precisamos detalhar o que é esse tal de escopo?

Escopo de Variáveis – diferença entre var e let

Escopo é o local onde aquela variável é visível para o programa, e a questão que entra é até onde essa variável será visível, isso quem deverá definir é o programador, em outras linguagens de programação quando declaramos uma variável dentro de um bloco a mesma só será visível naquele bloco, usando var não.

esse comportamento é perfeitamente normal, declarei uma variável dentro de um bloco e ela será visível dentro desse bloco, porém quando usamos a palavra var isso não acontece.

Esse código por mais “estranho” que pareça funciona, ou seja uma variavél declarada com a palavra var é visível dentro e forá de blocos. Observação esse comportamento do “var” não acontece em blocos de funções.

Escopo de Função


Por que? A função possuir um escopo “especial” para o javascript ou seja todas as declarações de variáveis utilizando a palavra reservada var que esteja encapsulada em bloco de função só será visivel apenas dentro da função.

Problemas em usar var

Os navegadores possuem um objeto chamado window

diferença entre var e let

Console do browser

esse objeto é global, e todas as variáveis que declaramos com var menos ás que estive em escopo de função ficará visível dentro do objeto window.

window2

Fuja do escopo global

Esse é o grande problema em criar variáveis usando var. Por que todas as variáveis vão para um só lugar no caso dos browsers, vai para o objeto window, sua aplicação poderá ser facilmente quebrada por uma simples sobrescrita de valores de variáveis.

Vantagens em usar let


Veja que apesa dos identificadores serem iguais, não deu nenhum erro e ele mostrou saidas diferentes pois são escopos diferentes, essa é a principal diferença entre let e var, let possuir escopo de bloco já o var não.

By: Alisson Suassuna

——————————–

Veja também Usando o operador destructuring