Funções em javascript
É importante notar, especialmente se você está vindo para o javaScript de outra linguagem, que as variáveis em JavaScript não são definidas em um escopo de bloco, mas em um escopo de função. Isto significa que se uma variável é definida dentro de uma função, ela não é visível fora dela. Todavia, uma variável definida dentro de um bloco if ou for é visível fora deste bloco de códigos. O termo variáveis globais descreve variáveis que você define fora de qualquer função, como oposto a variáveis locais as quais são definidas dentro de uma função. O código dentro de uma função tem acesso a todas as variáveis globais como também as suas próprias variáveis locais.
No próximo exemplo
A função f() tem acesso a variável global var global = 1; function f() { var local = 2; global++; return global;
}
>>> f();
2
>>> f();
3
>>> local local is not defined
É também importante notar que se você não usar var para declarar uma varável, esta variável é automaticamente colocada no escopo global. Vamos ver um exemplo:
>>> function f() {local = 2;}
>>> local local is not defined
>>> f()
>>> local
2
O que aconteceu? A função f() contém a variável local. Antes de chamar a função, a variável não existe. Quando você chama a função pela primeira vez, a variável local é criada com um escopo global. Então quando você acessar local fora da função, ela existirá.
•
Dicas das melhores práticas
•
Minimize o número de variáveis globais. Imagine duas pessoas trabalhando em duas funções diferentes dentro do mesmo script e ambas decidem usar o mesmo nome para suas variáveis globais. Isto pode facilmente resultar em bugs difíceis de serem achados. •
Sempre declare suas variáveis usando var.
Aqui temos um exemplo interessante que mostra um aspecto importante do escopo local versus escopo global. var a = 123; function f() { alert(a); var a = 1; alert(a); }
>>>f();
Você deveria esperar que o primeiro alert() iria mostrar 123 (o valor