martes, 12 de febrero de 2013

Javascript - Closure


Debido a la forma en la que javascript interpreta las funciones y posteriormente las ejecuta tenemos lo que se denomina "closure". Un "closure" es el link que se crea entre una función y una variable (u otra función) que esta fuera de dicha función. Es decir, tenemos acceso a las variables en el ámbito en el que fueron definidas.Podemos utilizar los "closures" para llevar a cabo diversas técnicas como podría ser el cacheo de resultados.

Ejemplo (Serie numérica):

function naturales() {
  var foo = -1;
  return function () {
    foo++;
    return foo;
  }
}

var serie = naturales();
serie() //devuelve 0
serie() //devuelve 1
serie() //devuelve 2

En este ejemplo tenemos la función A que devuelve una función  esta segunda función incrementa foo en 1 y devuelve el resultado. La función retornada puede ver foo, se ha creado un "closure", por lo tanto una vez guardamos nuestra función retornada veremos como nos va dando números consecutivos cada vez que la llamamos.

Más adelante veremos que los "closures" se utilizan para muchísimas cosas en Javascript.

Hasta pronto

No hay comentarios:

Publicar un comentario