Scope das variáveis em JavaScript: variáveis locais e globais

Scope das variáveis em JavaScript: variáveis locais e globais

Em JavaScript, as variáveis têm um alcance a que se chama scope. É uma noção importante em JavaScript, porque é fonte frequente de erros: consoante o sítio onde declaras a variável, o scope muda. Se a declarares dentro de uma função, só pode ser usada nessa função. Há dois tipos de variáveis, as variáveis locais e as variáveis globais.

javascript
var tutu = "tutu"; // 1

function maFonction() {
    var toto = "toto"; // 2
    return toto;
}
  1. tutu tem um scope a que se chama variável global: pode ser usada em qualquer ponto do script, incluindo dentro de uma função.
  2. toto também tem um scope, mas é uma variável local: não pode ser usada fora da sua função.

Variável local

Quando crias uma variável dentro de uma função com var, ela só pode ser usada nessa função. Diz-se então que a variável é local, ou que o seu alcance é o da função onde foi declarada. Não pode ser lida fora dela. O navegador cria as variáveis locais quando a função é executada e elimina-as assim que a função termina o seu trabalho. Retém ainda o seguinte:

  • Duas funções diferentes podem usar variáveis com o mesmo nome sem criar qualquer conflito de nomes.
  • Se a função for chamada várias vezes, a variável pode ter um valor diferente de cada vez.

Variável global

As variáveis globais podem ser usadas em qualquer ponto do script e declaram-se fora de qualquer função. Diz-se que têm alcance global.
As variáveis globais ficam guardadas em memória no navegador. Ocupam por isso mais memória do que as locais e aumentam o risco de conflitos de nomes com outros scripts. É por isso que deves privilegiar as variáveis locais sempre que possível.

JavaScript

Damien Flandrin Programador web desde 2010, criador da Gekkode e do Email Impact. Cada artigo é testado num projeto real antes de ser publicado. Contacto
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.