DEV Community

Plínio Ribeiro
Plínio Ribeiro

Posted on

Diferenças entre var, let, e const na linguagem Javascript

No post anterior eu expliquei sobre o conceito de escopos na linguagem Javascript. Neste trarei breves notas sobre a diferença na forma como declaramos variáveis no Javascript.

Qual é a diferença de declarar uma variável como var, let ou const.

Quem já programa na linguagem a um bom tempo, a regra era iniciar uma variável com var. Porém, após o ES2015 (ES6), novas formar surgiram, quais sejam: let e const.

Variáveis declaradas com var

Um aspecto importante quando utilizamos var é que ele tem escopo global e local (aqui). Como vimos quando estava falando de escopo, é possível acessar uma variável inicializada fora do escopo que a esta invocando.

Olha o exemplo:

var nome = "Heliot"

function pequi() {
    console.log(nome) // Heliot
}

pequi()
Enter fullscreen mode Exit fullscreen mode

No exemplo acima, quando chamamos a função pequi(), ela consegue acessar o conteúdo da variável nome e exibir o seu conteúdo. Isto se dá pela razão de possuir o escopo global, ou seja, ela pode ser utilizada em várias partes do nosso código.

Impera anotar acerca da utilização de var é o hoisting realizado pela linguagem. Contudo, este assunto eu tratarei no próximo texto.

Outro aspecto importante da utilização de var é possibilidade de alterar o conteúdo da variável.

let nome = "Heliot"

function pequi() {
    nome = "Larissa"
    console.log(nome) // Larissa
}

pequi()
Enter fullscreen mode Exit fullscreen mode

Quando chamamos a função pequi(), alteramos o valor da variável sem nenhum erro. Dado o seu escopo global de acessibilidade de leitura e modificação.

Variáveis declaradas com let

Let está sendo a forma preferida de declarar variáveis. Se diferencia de var em razão do seu escopo ser de bloco e não global.

O que é um bloco? Um bloco é um trecho de código iniciado e fechado por chaves “{}”. O que estiver nesse contexto é um bloco especifico.

Quando iniciamos uma variável com let em um bloco, sua acessibilidade se é limitada a este bloco. Vejamos um exemplo.

let n = 4;

if (n > 3) {
    let ola = "Olá para todos!";
    console.log(ola); // Olá para todos!
}

console.log(ola) // ReferenceError: ola is not defined
Enter fullscreen mode Exit fullscreen mode

Veja que quando tentamos tentar acessar o conteúdo de ola fora do bloco é retornado um erro de referência.

Isso não acontece quando utilizamos var.

Olha outro exemplo.

let n = 4;

if (n > 3) {
    var ola = "Olá para todos!";

    console.log(ola); // Olá para todos!
    }

console.log(ola) // Olá para todos!
Enter fullscreen mode Exit fullscreen mode

Já nesse exemplo foi possível acessar o conteúdo de ola. Isto se dá pelo hoisting, que explicarei no próximo texto.

Está limitação de acessibilidade é a principal diferença entre declara com var ou com let.

Quando a possibilidade de sofrer alterações, let permite que sejam realizadas. Veja:

let n = 4;

if (n > 3) {
    n = 0
}
console.log(n) // 0
Enter fullscreen mode Exit fullscreen mode

Variáveis declaradas com const

A caraterística marcante da utilização de const é a sua imutabilidade. Quando declaramos variável com const ela não poderá ser alterar ou redeclarada.

const a = 1
a = 2 // TypeError: Assignment to constant variable.
console.log(a)
Enter fullscreen mode Exit fullscreen mode

No exemplo acima, quando tentamos modificar o valor de a, é retornado um erro de tipo, que impede a alteração da variável já declarada.

Conclusão

Neste texto eu trouxe breves notas da diferença entre a utilização de var, let e const. Sendo essas últimas introduzidas pelo ES2015 (ES6).

Conhecer suas diferenças é importante na escrita diárias dos nossos códigos, para que sejam mais eficientes e com menos chances de provocarem bugs.

Top comments (0)