Escopo de Variáveis
Vamos entrar em um tema agora muito simples do JavaScript, mas que muita gente esquece, principalmente em projetos pequenos: escopo.
O escopo de uma variável é o alcance que ela tem, de onde pode ser acessada (não confunda com encapsulamento). Esse escopo pode ser global ou local.
No escopo global, como o próprio nome diz, a variável pode ser acessada de qualquer lugar do script, seja de fora de tudo, dentro de funções, dentro de laços, tudo. Diferente do PHP, JavaScript não necessita que as variáveis globais sejam declaradas dentro de funções. Basta usa-las normalmente. Veja um exemplo de uma variável global:
var global = "Variável Global";
function testGlobal() { alert(global); }
Familiar, não? Também podem ser declaradas sem o “var” na frente. Na verdade, não há segredo algum, você já faz isso desde suas primeiras linhas em JavaScript.
O escopo local é um tanto relativo. Uma variável local pode ser acessada de um mesmo nível ou níveis inferiores, e nunca superiores. Veja:
function local() {
var local = "Variavel Local";
alert(local);
}
alert(local);
O primeiro alert (se chamado) funcionará perfeitamente, já o segundo (de fora da função) retornará em um erro. Agora preste atenção: para declarar variáveis locais, precisamos obrigatoriamente incluir o var, senão as variáveis passarão para o escopo global.
Tá certo, isso não é o melhor tutorial do mundo, nem teve muita utilidade. Até agora. Pense em um script onde muitas variáveis utilizam o mesmo nome, em funções diferentes. Seria um problema, não? Observe:
var i = 3;
function errado() {
while(i < 15) { i++; }
alert(i);
}
function certo() {
var i = 3;
while(i < 15) { i++; }
alert(i);
}
alert(i); // Retorna 3
certo(); // Retorna 15
alert(i); // Ainda retorna 3
errado(); // Retorna 15, tudo certo
alert(i); // Ops, retorna 15!
Viu? É importante tomar cuidado com esses pequenos detalhes. Já pensou se o seu script dependesse dessa variável i, e em uma simples função ela vai pelos ares (ou melhor, pelos 15)?
E este é o motivo pelo qual usamos for(var i = 0;i < x; i++), declarando o i.
Diferencie-se, cuide dos pequenos detalhes. E boa sorte!







É…
Iniciantes: Fiquem bem atentos a este post.
Durante minha infância em javascript tive muitos, muitos problemas causados por contadores ‘i’ globais.
aff, deu canseira até o dia que eu entendi essa questão de global e local.
E nem é difícil. O negócio é só bastante atenção mesmo. Sorte que nunca passei por problemas desses, costumava botar tudo em variáveis diferentes, só pra garantir…
Gostaria de saber como eu faço para um script javascript receba em uma variável o valor de Session vinda do ASP, por exemplo.
No ASP:
No Javascript (na verdade em um arquivo .JS):
var confere=Session(“teste”)
Aqui esta o problema, como deve ser este código para que a variável javascript recupere, ou melhor, receba o valor da session acima?
Grato por qualquer ajuda.
Marcelo Arruda.
Assim:
var confere= “”;
Simples, não?
Vixx o post saiu errado,
Veja neste link a
resposta
Cara, estou fazendo uma pesquisa e esse tuto me ajudou muito. Obrigado
@Lazaro: de nada! Estamos aí pra isso!
Você poderia incrementar este tuorial falando do escopo em objetos e a utilização do “This”.
Obigado pelo tutorial!