Variáveis

No Javascript, podemos declarar uma variável utilizando a palavra reservada var, let e const.

A diferença entre elas, é que quando se declara uma variável utilizando o var, ela acaba vazando o escopo de por exemplo, um if, for, while, etc. Já quando se declara com let, nesse caso o escopo é respeitado. E por fim, quando se declara com const, uma vez declarada a variável não consegue mudar seu valor, gerando um erro.

  • Var, let e const

if (true) {
    var idade = 26;
}

console.log(idade);    // 26
if (true) {
    let idade = 26;
}

console.log(idade); // ReferenceError: idade is not defined
const idade = 26;

idade = 27;

console.log(idade); // TypeError: Assignment to constant variable.
  • Escopo

As variáveis possuem escopo, por exemplo, se for declarado no escopo global, qualquer lugar pode ter acesso a essa variável, porém se for declarado dentro de uma função, apenas essa função irá ter acesso ao seu valor.

let idade = 26;

function myFunction() {
    console.log(idade);
}

myFunction();   // 26
function myFunction() {
    let idade = 26;
}

console.log(idade);  // ReferenceError: idade is not defined
  • Hoisting

Quando o javascript compila todo o seu código, todas as declarações que estão utilizando var, são levadas para o topo do código. A declaração em si fica no topo mas a atribuição fica no mesmo local.

console.log(idade)  // undefined

var idade = 26;

console.log(idade);   // 26

Esse código acima, é equivalente ao debaixo, ou seja, a declaração sobre para o topo.

var idade;

console.log(idade);   // undefined

idade = 26;

console.log(idade);   // 26

Last updated