No JavaScript, o VAR é usado para declarar variáveis, mas essa sintaxe não é estritamente necessária. Muitas vezes, podemos usar diretamente uma variável sem usar o VAR para declará -la.
A cópia do código é a seguinte:
var x = "xx";
y = "xxx";
E assim por diante. Há um problema com isso. Por exemplo, em uma linha no código, quero usar uma variável declarada x. Como resultado, devido aos erros de digitação ou ortografia, essa variável é escrita como y. O resultado é equivalente a uma declaração "implícita" de uma variável y. Na programação real, esse erro às vezes é difícil de detectar.
Quando você faz essa declaração "implícita" no contexto atual, o mecanismo JavaScript procurará primeiro se essa variável foi declarada anteriormente no contexto atual. Caso contrário, pesquise no nível anterior de contexto. Se não foi encontrado, finalmente declarará essa variável na janela!
por exemplo:
O código é o seguinte:
janela. y = "Olá"; function func () {y = "Oh, não !!!"; } func (); alerta (janela.y); //#=> Exibir "Oh, não !!!"Quando qualquer camada no contexto tiver uma definição de variável "implícita", a variável dessa camada será modificada sem gerar uma nova variável na janela. (Esse tipo de bug é bastante irritante, especialmente o código mais complexo encapsulado)
por exemplo:
O código é o seguinte:
var x = "window.x"; função a () {var x = "a's x"; var b = function () {var c = function () {// não var! x = "C's x:"; }; alerta ("Antes da execução C, o BX:" + X); c (); alerta ("Após C, execute, o bx:" + x); }; alerta ("ax é:" + x); b (); alerta ("Após a execução da função B, o machado é:" + x); }; alerta ("antes de uma corrida, janela.x:" + x); um(); alerta ("Após uma corrida, window.x:" + x);Existem as seguintes camadas aqui: Window, Func A, Func B, Func C é sempre aninhada em níveis. janela-> a-> b-> c
Janela e uma variável definida x e B não são definidas. Um X é declarado em C, que eventualmente modifica o valor da variável a.
Lembre -se, no JavaScript, declare variáveis e você deve adicionar VAR antes dele.