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()
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()
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
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!
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
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)
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)