DEV Community

Plínio Ribeiro
Plínio Ribeiro

Posted on

3 2

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.

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay