1. Escopo: o escopo de uso de uma variável
(1) Escopo global: Ambas se referem a variáveis globais, que são caracterizadas pelo uso repetido.A desvantagem é que o uso inadequado pode facilmente causar poluição global.
(2) Escopo da função: refere-se a variáveis locais, válidas apenas dentro do corpo da função.Quando a chamada da função termina, o ciclo de vida da variável também termina. A desvantagem é que não pode ser usado repetidamente.
Segundo, o ciclo de vida da função no escopo da função
Tome o seguinte código como exemplo:
var a;
function fun(){
function text(){
// to much coding
}
text();
}
fun();
(1) Antes que a função comece a ser executada, crie uma pilha do ambiente de execução (ECS) para chamar a função principal (main ()), e a função principal criará uma janela global de objeto.
Este é o ambiente antes de iniciar a execução
(2) Pré-compilação de janelas (escopo global)
(3) A função na janela começa a executar
Definition definição da função divertida: crie um objeto de função (a primeira função declarada pela janela é divertida), pontos divertidos para o objeto de função de referência, a propriedade escopo do objeto de função refere-se novamente ao escopo quando a função é criada (o objeto de função divertido aqui se refere novamente janela)
call chamada de função divertida: quando a declaração e a referência são concluídas, quando o programa executa fun (), a fun () é chamada, o que significa que o ECS abrirá um novo elemento (novo ambiente de execução da função) fun (), fun () Em seguida, crie um próprio objeto ativo (AO) e aponte para o objeto ativo.O objeto ativo armazena as variáveis locais em fun () ou o novo corpo da função (aqui está o texto da função interna de fun () ()), O atributo pai no objeto ativo refere-se ao atributo de escopo da função para apontar para o escopo pai (aqui está a janela).
Definition Definição da função de texto: semelhante a ①, em que texto se refere ao objeto da função de referência e a propriedade scope do objeto da função refere-se ao escopo da criação da função (divertida)
④ chamada da função de texto: semelhante ao ② acima, quando o programa é executado para text () , Ambos test () são chamados, test () cria seu próprio objeto ativo (AO) e aponta para o objeto ativo, o atributo pai no objeto ativo refere-se ao atributo de escopo dos pontos de função para o escopo pai (aqui é divertido : AO).
(4) A chamada de função na janela termina
Depois que a função é executada, a próxima etapa é abrir a pilha, liberar o objeto ativo e liberar as variáveis locais no objeto ativo. Esse é o fim do ciclo de vida das variáveis locais.
Terceiro, a cadeia de escopo
A cadeia de escopo de uma função é um efeito de teste em cadeia formado por referências contínuas de vários níveis de escopo, ou seja, o atributo pai no objeto ativo refere-se ao atributo de escopo da função no escopo pai. A cadeia de escopo olha para o escopo pai.
cadeia de escopo
- Cada função copiará a cadeia de escopo de sua função pai quando for definida (declaração / expressão da função)
- Durante a chamada de função (em execução), gere AO e empurre AO para o topo da pilha da cadeia de escopo