Creo que la Internet tiene una gran cantidad de cierre de explicar, después de todo, esta cosa ojos del espectador sabios ven la sabiduría, para mí, resumió las dos características:
1. función anidada funciones, funciones internas y variables pueden hacer referencia a un parámetros de función externos
función aaa () { var a = 5 ; función bbb () { alerta (a) } retorno bbb } var c = aaa (); C();
2. Los parámetros y variables que no se recuperarán recolección de basura
JS mecanismo de recolección de basura en la prueba de función () { var a = 1. ; Alert (a) } Test (); // realizar esta función, la función no existe dentro de una,
Echemos un vistazo a los beneficios de los cierres de tracción:
1. quieren una presencia variable a largo plazo en la memoria de ellos (generalmente función se completa, las variables y parámetros serán destruidos)
2. Evitar la contaminación de las variables globales
función AAA () { var A = 1. ; A ++ ; Alert (A) } AAA (); // 2 AAA (); // 2 AAA (); // 2 por encima de función lleva a cabo sin tener en cuenta varias veces, una ventana emergente 2 es decir, si queremos expulsar 2/ 3 / 4 como resultado una? Necesitamos usar cierres
función AAA () { var A = 1. ; retorno function () { A ++ ; Alert (A) } } var BBB = AAA (); BBB (); // 2 BBB (); // . 3 BBB (); // 4 // escritura función expresión var AAA = (function () { var a = 1. ; retorno function () { un ++ ; Alert (a) } }) () Por aaa () // 2 por aaa () // 3 por aaa () // 4