Variáveis e declarações de variáveis são os conceitos mais básicos de uma linguagem e os iniciantes irão dominá-los rapidamente. O mesmo vale para declarar variáveis em JavaScript, é muito simples var (palavra-chave) + nome da variável (identificador).
Caminho 1
teste var;
var test = 5; Deve-se observar que esta frase não pode ser incluída na função, caso contrário será uma variável local. Esta é a primeira maneira de declarar variáveis globais.
Caminho 2
teste = 5;
Sem usar var, atribua diretamente um valor ao identificador test, que declarará implicitamente a variável global test. Mesmo que a instrução esteja dentro de uma função, test se torna uma variável global quando a função é executada.
Caminho 3
janela.teste;
window.test = 5; Este método é frequentemente usado para expor algumas funções ao mundo após a execução de uma função anônima. Como a última frase em JQuery1.5
janela.jQuery = janela.$ = jQuery;
Se você usar apenas o teste de variável, não haverá diferença entre os três métodos. Por exemplo: alert(test) exibirá 5. No entanto, existem diferenças entre os três métodos em alguns casos. Declare três variáveis a1, a2, a3 das três maneiras acima, respectivamente.
a1 = 11;
var a2 = 22;
janela.a3 = 33;
1. para na janela
for(a na janela){
if(a=='a1'||a=='a2'||a=='a3'){
alerta(a)
}
}
IE6/7/8/9: Apenas a3 aparece, indicando que variáveis globais declaradas através do primeiro e segundo métodos não podem ser obtidas através da janela for.
Firefox/Chrome/Safari/Opera: a1, a2 e a3 aparecem, indicando que variáveis globais declaradas de três maneiras podem ser obtidas através de for na janela.
2.excluir
tentar {
alerta(excluir a1);
}catch(e){alert('Não é possível excluir a1')}
tentar{
alerta(excluir a2);
}catch(e){alert('Não é possível excluir a2')}
tentar{
alerta(excluir a3);
}catch(e){alert('Não é possível excluir a3')}
Os resultados são os seguintes
Como você pode ver,
1. delete a2 é falso em todos os navegadores. Ou seja, as variáveis declaradas através de var não podem ser excluídas e todos os navegadores se comportam da mesma forma. Isso também é mencionado no livro Rhino.
2. Variáveis globais declaradas através de window.a3 não podem ser excluídas no IE6/7/8, mas podem ser excluídas no IE9/Firefox/Chrome/Safari/Opera.
Embora existam diferenças nos dois pontos acima, ao usar em operação, ambos retornam verdadeiros.
alert('a1' na janela); //true
alert('a2' na janela); //true
alert('a3' na janela); //true
Ao usar with para abrir o fechamento da janela do objeto, todos os navegadores se comportam da mesma forma, como segue
com(janela){
se(a1){
alerta(a1); //11
}
se(a2){
alerta(a2); //22
}
se(a3){
alerta(a3); //33
}
}