Âmbito das variáveis
O que são as variáveis locais e globais, e como trabalhamos com elas em Javascript.
hama-se âmbito das variáveis ao lugar onde estas estão disponíveis. Em geral, quando declaramos uma variável fazemos com que esteja disponível no lugar onde se foi declarado, isto ocorre em todas as linguagens de programação e como javascript se define dentro de uma página web, as variáveis que declaremos na página estarão acessíveis dentro dela. Deste modo, não poderemos acessaràs variáveis que tenham sido definidas em outra página. Este é o âmbito mais habitual de uma variável e chamamos a este tipo de variáveis globais à página, mesmo que não seja o único, já que também poderemos declarar variáveis em lugares mais dimensionados.
Variáveis globais
Como dissemos, as variáveis globais são as que estão declaradas no âmbito mais amplo possível, que em Javascript é uma página web. Para declarar uma variável global à página simplesmente faremos em um script, com a palavra var.
<SCRIPT> var variávelGlobal </SCRIPT>
As variáveis globais são acessíveis desde qualquer lugar da página, ou seja, a partir do script onde foi declarado e todos os demais scripts da página, incluindo os que manejam os eventos, como o onclick, que já vimos que podia ser incluído dentro de determinadas etiquetas HTML.
Variáveis locais
Também poderemos declarar variáveis em lugares mais dimensionados, como por exemplo, uma função. A estas variáveis chamaremos de locais. Quando se declarem variáveis locais somente poderemos acessá-las dentro do lugar aonde tenha sido declaradas, ou seja, se havíamos declarado em uma função somente poderemos acessá-la quando estivermos nessa função.
As variáveis podem ser locais em uma função, mas também podem ser locais a outros âmbitos, como por exemplo, um loop. Em geral, são âmbitos locais qualquer lugar dimensionado por chaves.
<SCRIPT> function minhaFuncao) (){ var variavelLocal } </SCRIPT>
No script anterior declaramos uma variável dentro de uma função, pelo qual esta variável somente terá validade dentro da função. Pode-se ver as chaves para dimensionar o lugar onde está definida essa função ou seu âmbito.
Não há problema em declarar uma variável local com o mesmo nome que uma global, neste caso a variável será visível desde toda a página, exceto no âmbito onde está declarada a variável local já que neste lugar esse nome de variável está ocupado pela local e é ela quem tem validade. Resumindo, em qualquer lugar da página, a variável que terá validade é a global. Menos no âmbito onde está declarada a variável local, que será ela que vai ter validade.
<SCRIPT> var numero = 2 function minhaFuncao (){ var numero = 19 document.write(numero) //imprime 19 } document.write(numero) //imprime 2 </SCRIPT>
Um conselho para os principiantes poderia ser não declarar variáveis com os mesmos nomes, para que nunca tenha confusão sobre qual variável é a que tem validade em cada momento.
Diferenças entre utilizar var ou no
Como dissemos, em Javascript temos liberdade para declarar ou não as variáveis com a palavra var, mas os efeitos que conseguiremos em cada caso serão distintos. Na verdade, quando utilizamos var, estamos fazendo com que a variável que estamos declarando seja local ao âmbito onde se declara. Por outro lado, se não utilizamos a palavra var para declarar uma variável esta será global a toda a página, seja qual for o âmbito no qual tenha sido declarada.
No caso de uma variável declarada na página web, fora de uma função ou de qualquer outro âmbito mais reduzido, é indiferente se se declara ou não com var, desde um ponto de vista funcional. Isto é devido a que qualquer variável declarada fora do âmbito global a toda a página. A diferença pode ser apreciada em uma função por exemplo, já que se utilizamos var a variável será local à função e se não o utilizamos , a variável será global à página. Esta diferença é fundamental na hora de controlar corretamente o uso das variáveis na página, já que se não o fazemos em uma função poderíamos sobrescrever o valor de uma variável, perdendo o dado que pudesse conter previamente.
<SCRIPT> var numero = 2 function minhaFuncao (){ numero = 19 document.write(numero) //imprime 19 } document.write(numero) //imprime 2 //chamamos a funcao minhaFuncao() document.write(numero) //imprime 19 </SCRIPT>
Neste exemplo, temos uma variável global à página chamada numero, que contém um 2. Também temos uma função que utiliza a variável numero sem a ter declarado com var, pelo que a variável numero da funcao será mesma variável global numero declarada fora da função. Em uma situação com esta, ao executar a função se sobrescreverá a variável numero e o dado que havia antes de executar a função se perderá.