Closures- Un primer enfoque

viernes, 14 de junio de 2013

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 incrementar