He estado en contacto con JavaScript durante mucho tiempo, y cada vez que entiendo los cierres, estoy buscando trabajo en el front-end de la web recientemente, por lo que necesito consolidar la base.
Este artículo se refiere al cierre del blog de Joy_Lee basado en su blog y se esfuerza por explicar mi comprensión en forma de comentarios. Si hay alguna inapropiación, las críticas y la corrección son bienvenidos.
En la programación avanzada, esto se dice: cuando otras funciones se definen dentro de una función, se crea un cierre. El cierre tiene permiso para acceder a todas las variables contenidas dentro de la función.
(¿Cómo comprende esta oración? Según esta oración, ¡un cierre es una función anidada! Una función anidada puede, por supuesto, acceder a las variables de la función que la contiene, y no hay problema).
En términos generales, las funciones internas pueden acceder a variables a nivel anterior o incluso niveles globales. Entonces, algunas personas entienden esto: a través de los cierres, se puede lograr el acceso externo a las variables dentro de la función local.
(Si simplemente dividimos el alcance en un nivel, supongamos que el alcance global como el primer nivel, donde el alcance interno del cuerpo de la función definida es el segundo nivel, y el alcance interno de la función de la función definida está anidada dentro del segundo alcance del segundo nivel, como el tercer nivel, en el sentido tradicional, el primer nivel no puede acceder a la variable de segundo nivel (esta variable se llama variable local), y el segundo nivel no puede acceder al tercer nivel, ... y videos no puede ser la variable de la variable. En el alcance de este nivel, y luego buscó en el nivel anterior hasta el primer nivel. El mecanismo de recolección de basura GC para no reciclar los recursos ocupados por esta cadena.
función a () {var i = 0; función b () {alerta (++ i); } retorno b; } var c = a (); do();Es decir, la función del cierre es que después de que A se ejecuta y devuelve, el cierre hace que el mecanismo de recolección de basura de JavaScript GC no recupere los recursos ocupados por A, porque la ejecución de una función interna B de A necesita confiar en las variables en a.
Debido a la existencia del cierre, después de la función, un retornos, siempre existe. De esta manera, cada vez que se ejecuta C (), I es el valor de I alertado después de agregar 1.
Entonces, si A no retrocede la función B, la situación es completamente diferente. Porque después de que A se ejecuta, B no se devuelve al mundo exterior de A, sino que solo se hace referencia por A, y en este momento A solo será referenciado por B, por lo que las funciones A y B son referenciadas entre sí, pero no son perturbadas por el mundo exterior (referido por el mundo exterior), las funciones A y B serán recicladas por GC.
De hecho, es el cierre que extiende el ciclo de vida de la variable. Por lo general, el alcance de una función, es decir, variables, se destruirá después de ejecutar la función, pero cuando la función devuelve un cierre, siempre que el cierre no se libere, toda la cadena de alcance ocupará la memoria. (Los cierres extienden el ciclo de vida de una variable, que se refiere al caso de ser referenciado en el primer nivel. Pero sin esta referencia, ¿se pueden llamar cierres?)
Hablando de la cadena de alcance: es decir, el alcance de la función, el alcance de la función de la capa anterior ... y el alcance global. Al acceder a una variable, si no la tiene, busque capa por capa hasta todo el mundo. Si aún no lo tiene, informará un error.
(Realmente quiero quejarme de que la cadena de alcance del cierre es curva).
PD: Algunos internautas recomendaron otro artículo para analizar el concepto de cierres de JavaScript . ¿Es autorizado? Finalmente, hay un concepto claro:
Habiendo dicho tanto, ¿qué es exactamente un cierre? Resumimoslo a continuación:
El cierre es un concepto que describe un fenómeno en el que reside la memoria después de la ejecución de la función. Mientras comprenda este concepto central, los cierres no son difíciles de entender.
El artículo anterior le permite comprender los cierres en una oración (simple y fácil de entender) es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.