JavaScript: ilustra el alcance de la función y la cadena del alcance desde la perspectiva de la memoria

1. Alcance: el alcance del uso de una variable

(1) Alcance global: ambos se refieren a variables globales, que se caracterizan por el uso repetido. La desventaja es que el uso inadecuado puede causar fácilmente la contaminación global.
(2) Alcance de la función: se refiere a variables locales, que solo son válidas dentro del cuerpo de la función. Cuando finaliza la llamada a la función, también finaliza el ciclo de vida de la variable. La desventaja es que no se puede usar repetidamente.

Segundo, el ciclo de vida de la función bajo el alcance de la función

Tome el siguiente código como ejemplo:

	var a;
	function fun(){
		function text(){
			// to much coding
		}
		text();	
	}
	fun();
(1) Antes de que la función comience a ejecutarse, cree una pila de entorno de ejecución (ECS) para llamar a la función principal (main ()), y la función principal crea una ventana de objeto global.

Este es el entorno antes de comenzar la ejecución.
Inserte la descripción de la imagen aquí

(2) Precompilación de ventanas (alcance global)

Inserte la descripción de la imagen aquí

(3) La función en la ventana comienza a ejecutarse

Definition definición de función divertida: crea un objeto de función (la primera función declarada por window es divertida), diversión apunta al objeto de función de referencia, la propiedad de alcance del objeto de función se remite al alcance cuando se crea la función (el objeto de función de diversión aquí se refiere de nuevo ventana)
Inserte la descripción de la imagen aquí
② llamada a función fun: cuando se completa la declaración y la referencia, cuando el programa ejecuta fun (), se llama a fun (), lo que significa que ECS abrirá un nuevo elemento (nuevo entorno de ejecución de función) fun (), fun () Luego cree un objeto activo propio (AO) y apunte al objeto activo. El objeto activo almacena las variables locales en fun () o el nuevo cuerpo de la función (aquí está el texto interno de la función fun () ()), El atributo padre en el objeto activo se refiere al atributo de alcance de la función para apuntar al alcance padre (aquí está la ventana).
Inserte la descripción de la imagen aquí
Definition Definición de función de texto: similar a ①, donde el texto se refiere al objeto de función de referencia, y la propiedad de alcance del objeto de función se remite al alcance de la creación de la función (ambos divertidos)
Inserte la descripción de la imagen aquí
call llamada a función de texto: similar a ② anterior, cuando el programa se ejecuta en texto () , Se llama test (), test () crea su propio objeto activo (AO) y apunta al objeto activo, el atributo padre en el objeto activo se refiere al atributo de alcance de los puntos de función al alcance padre (aquí es divertido : AO).
Inserte la descripción de la imagen aquí

(4) La llamada a la función en la ventana finaliza

Después de ejecutar la función, el siguiente paso es abrir la pila, liberar el objeto activo y liberar las variables locales en el objeto activo. Ese es el final del ciclo de vida de las variables locales.
Inserte la descripción de la imagen aquí

En tercer lugar, la cadena de alcance

La cadena de alcance de una función es un efecto de prueba de cadena formado por referencias continuas de múltiples niveles de alcance, es decir, el atributo padre en el objeto activo se refiere al atributo de alcance de la función al alcance padre. La cadena de alcance mira al alcance primario.

cadena de alcance
  1. Cada función copiará la cadena de alcance de su función principal cuando se define (declaración de función / expresión de función)
  2. Durante la llamada a la función (en ejecución), genere AO y luego empuje AO a la parte superior de la pila de la cadena de alcance
    Inserte la descripción de la imagen aquí
Publicó 40 artículos originales · ganó 31 · vistas 2787

Supongo que te gusta

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