1. La cadena de alcance de las funciones de JavaScript se divide en cadena de alcance en tiempo de definición y cadena de alcance en tiempo de ejecución;
2. Cuando se define una función, tiene un atributo [[alcance]] que indica su cadena de alcance de definición. La cadena de alcance de definición [[alcance]] sigue las siguientes reglas: la cadena de alcance de definición de una función [[alcance]] es siempre la. cadena de alcance de ejecución de la función externa en la que se encuentra;
3. La cadena de alcance de definición de la función global solo contiene los atributos de ventana;
4. Cuando se ejecuta una función, la cadena de alcance siempre se inserta en el objeto activo actual al principio de la cadena de alcance cuando se define (contiene esto, argumentos, parámetros y variables locales);
5. Cuando se ejecuta una función, el direccionamiento de variables siempre se busca desde la parte superior de la cadena de alcance hacia abajo, por lo tanto, la velocidad de direccionamiento de las variables globales es la más lenta;
6. Cuando se ejecuta la función interna, aún puede acceder a su cadena de alcance completa. Es por eso que los cierres pueden acceder a variables definidas por funciones externas completadas en tiempo de ejecución;
7. Cuando se encuentra una declaración with durante la ejecución de la función, todos los atributos del objeto especificado con se enviarán temporalmente a la parte superior de la cadena de alcance como la parte superior de la cadena de alcance;
8. Cuando la ejecución de la función encuentra una captura, el objeto de error especificado por catch se enviará temporalmente a la parte superior de la cadena de alcance como la parte superior de la cadena de alcance;
Demos un ejemplo y dibujemos la cadena de alcance para profundizar la comprensión:
Existe tal fragmento de código:
Copie el código de código de la siguiente manera:
función asignarEventos(){
identificación de var = "xdi9592";
document.getElementById("save-btn").onclick = función(evento){
guardarDocumento(id);
};
}
Llame al cierre anónimo generado por esta función Cierre y dibuje la siguiente figura para mostrar la cadena de alcance cuando se ejecuta asignarEvent y la cadena de alcance cuando se define Cierre: