Vamos a tocar un tema que estos últimos días a los integrantes de 3p nos tuvo algo ocupados: Closures en javascript.
"Un closure es un tipo especial de objeto que combina dos cosas: una función y el contexto en el que fué declarada". La definición no ayuda mucho a entender el concepto, así que vamos a plantear un ejemplo sencillo
En Javascript podemos definir funciones en cualquier momento, incluso dentro de otra función. Por ejemplo:
Ver ejemplo en JSFiddle
Dentro de la función sumar tenemos:- La variable total que posee la sumatoria resultante y será el resultado de la ejecución de la función
- La función suma que agrega a total el número que recibe pro parámetro
- Un ciclo for que recorre una serie de número de números y los suma
- Retorno de la función: Se devuelve la sumatoria total
Lo importante del código anterior es que entendamos que una función puede convivir dentro de otra. Ahora, será más sencillo comprender que son. Vamos a un nuevo ejemplo donde usemos uno:
Ver ejemplo en JSFiddle
incrementar es un clousure porque, usando la definición que dimos arriba, incorpora una función (sumar) y su contexto (el totalizador i). Ambos, existian cuando se llamó a crearFuncion() para instanciar la variable incrementarTwittear Seguir a @3p_ar