JavaScript: Ilustrando o escopo da função e a cadeia de escopos da perspectiva da memória

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
Insira a descrição da imagem aqui

(2) Pré-compilação de janelas (escopo global)

Insira a descrição da imagem aqui

(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)
Insira a descrição da imagem aqui
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).
Insira a descrição da imagem aqui
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)
Insira a descrição da imagem aqui
④ 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).
Insira a descrição da imagem aqui

(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.
Insira a descrição da imagem aqui

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
  1. Cada função copiará a cadeia de escopo de sua função pai quando for definida (declaração / expressão da função)
  2. Durante a chamada de função (em execução), gere AO e empurre AO para o topo da pilha da cadeia de escopo
    Insira a descrição da imagem aqui
Publicado 40 artigos originais · ganhou 31 · visualizações 2787

Acho que você gosta

Origin blog.csdn.net/CodingmanNAN/article/details/103015746
Recomendado
Clasificación