una singer pegar pantalon maquina mano jeans cremallera coser con como cojin cierre campera bolso javascript closures

javascript - singer - ¿Cuáles son los beneficios de un cierre y cuándo se utilizan normalmente?



como pegar un cierre a un cojin (3)

Soy un desarrollador web, pero mucha gente está buscando habilidades un poco más avanzadas y la comprensión de los cierres parece estar a la vanguardia de esto.

Obtengo todo el "contexto de ejecución creando una referencia a una variable que nunca se destruye", pero en realidad, ¿es esto una especie de implementación de variable privada o estática en JavaScript?


Hay muchos libros de JS disponibles, pero realmente debería obtener una copia del JavaScript de David Flanagan : La Guía Definitiva si realmente quiere aprender esto (todavía es la mejor IMHO de JS de referencia). Lea el capítulo sobre cierres y obtendrá un conocimiento mucho más profundo que el que puede darle una respuesta aquí.


Pueden ser buenos para muchas cosas, por ejemplo, visibilidad (como miembros privados en OO tradicional).

var count = function(num) { return function(add) { add = add || 1; num += add; return num; } }

Verlo

Mi count() se puede sembrar con un número. Cuando asigno una variable a la devolución, puedo llamarlo con un número opcional para agregarlo al número interno (un argumento originalmente, pero aún parte del alcance de la función devuelta).

Este es un resumen bastante bueno .

Ver también en .


Un cierre es un bloque de código con variables enlazadas ("captura" sus variables desde su contexto externo), pero es independiente de ese mismo contexto.

Un uso práctico en javascript es cuando se definen eventos o devoluciones de llamada: usted declara que un cierre se ejecuta con el clic de un botón, por ejemplo, pero este cierre puede hacer referencia a las variables declaradas en el ámbito de la persona que llama.

jQuery usa mucho los cierres. Por cierto, este es un buen enlace para comprender los cierres de jQuery: una explicación gráfica de los cierres de Javascript en un contexto jQuery .

Espero eso ayude.