Em algumas linguagens de programação do tipo C, cada pedaço de código no aparelho encaracolado tem seu próprio escopo, e as variáveis são invisíveis fora do segmento de código que as declaram. Chamamos o escopo do bloco e não há escopo de bloco no JavaScript. Em vez disso, o JavaScript usa o escopo da função: as variáveis são definidas no corpo da função que o declara e qualquer corpo de função aninhado no corpo da função. No código a seguir, I, J e K definidos em diferentes locais são definidos no mesmo escopo.
A cópia do código é a seguinte:
Texto da função (O)
{
var i = 0;
alerta (tipo de o);
if (typeof o == "string")
{
var j = 0;
for (var k = 0; k <10; k ++)
{
alerta (k); // saída 0-9
}
alerta (k); // saída 10
}
alerta (j); // saída 0
}
O escopo da função do JavaScript significa que todas as variáveis declaradas dentro de uma função são sempre visíveis no corpo da função. Curiosamente, isso significa que as variáveis estão disponíveis antes de serem declaradas. Esse recurso do JavaScript é informalmente chamado de elevação, ou seja, todas as variáveis declaradas no corpo da função do JavaScript (nenhuma atribuição envolvida) são "avançadas" para o topo do corpo da função. Veja o seguinte código
A cópia do código é a seguinte:
var global = "globas";
Função Globals ()
{
alerta (global); // indefinido
var global = "Hello qdao";
alerta (global); // Olá Qdao
}
Devido à natureza do escopo da função, as variáveis locais são sempre definidas em todo o corpo da função, o que significa que as variáveis dentro da função cobrem variáveis globais com o mesmo nome. Apesar disso, as variáveis locais serão realmente atribuídas quando o programa executar a instrução VAR. Portanto, o processo acima é equivalente a: declarar as variáveis na função "avançar" para o topo do corpo da função e deixar a inicialização das variáveis do colega na posição original:
A cópia do código é a seguinte:
var global = "globas";
Função Globals ()
{
var global;
alerta (global); // indefinido
global = "Olá QDAO";
alerta (global); // Olá Qdao
}