Share via


Escopo de variáveis e constantes

JScript possui três escopos: global, local e a classe.Se você declarar uma variável ou constante fora de uma definição de função ou classe, é uma variável global e seu valor está acessível e modificável em todo o seu programa.Se você declarar uma variável dentro de uma definição de função, essa variável é local.Ele é criado e destruído a cada vez que a função é executada; não possa ser acessado de fora da função.Se você declarar uma variável dentro de uma definição de classe, essa variável está disponível dentro da classe e não pode ser acessado diretamente do escopo global.Para obter mais informações, consulte Objetos com base em classe.

Discussão

Idiomas sistema autônomo C++ também têm "bloquear escopo"; qualquer conjunto de chaves ({}) define um novo escopo.JScript não dá suporte a escopos de bloco.

Uma variável local pode ter o mesmo nome de uma variável global, mas é totalmente distinta e separada.Conseqüentemente, a alteração do valor de uma variável não tem efeito sobre o Outros.Dentro da função na qual a variável local é declarada, somente a versão local tem significado.Isso é conhecido sistema autônomo visibilidade.

// Define two global variables.
var name : String = "Frank";
var age : int = "34";

function georgeNameAge() {
   var name : String; // Define a local variable.
   name = "George";   // Modify the local variable.
   age = 42;          // Modify the global variable.
   print(name + " is " + age + " years old.");
}

print(name + " is " + age + " years old.");
georgeNameAge();
print(name + " is " + age + " years old.");

A saída deste programa mostra que uma variável local pode ser modificada sem alterar o valor da variável global.As alterações para a variável global de dentro da função afetam o valor no escopo global.

Frank is 34 years old.
George is 42 years old.
Frank is 42 years old.

Como o JScript processa as declarações de variáveis e constante antes de executar qualquer código, não importa se a declaração é dentro de um bloco condicional ou alguma Outros construção.Depois de JScript encontrou todas as variáveis e constantes, ele executa o código na função.Isso significa que o valor de uma constante local está indefinido até que a demonstrativo de demonstrativo de constante seja atingida e que uma variável local é indefinida até que a variável seja atribuída a na função.

Às vezes, isso resultados em comportamentos inesperados.Considere o seguinte programa.

var aNumber = 100;
var anotherNumber = 200;
function tweak() {
   var s = "aNumber is " + aNumber + " and ";
   s += "anotherNumber is " + anotherNumber + "\n";
   return s;
   if (false)  {
      var aNumber;                // This statement is never executed.
      aNumber = 123;              // This statement is never executed.
      const anotherNumber = 42;   // This statement is never executed.
   } // End of the conditional.
} // End of the function definition.

print(tweak());

Esta saída deste programa é:

aNumber is undefined and anotherNumber is undefined

Você pode esperar que aNumber seria 100 ou 123 e que anotherNumber seria 200 ou 42, mas os dois valores são não definido.Desde que ambas aNumber e anotherNumber são definidos com escopo local, sombrear a variável global e constante com o mesmo nome. Como o código que inicializa a variável local e a constante nunca é executado, seus valores são não definido.

Declaração de variável explícita é necessária em modo rápido.Quando o modo rápido estiver desativado, declaração de variável implícita é necessária.Uma variável declarada implicitamente dentro de uma função — ou seja, uma que aparece à esquerda de uma expressão de atribuição sem a palavra-chave var — é uma variável global.

Consulte também

Conceitos

Valores não definidos

Outros recursos

Constantes e variáveis do JScript