Last Updated: February 25, 2016
·
482
· develop_andrade

Closures en javascript

Closures son considerados como una función avanzada en JavaScript, pero la comprensión es esencial para dominar el lenguaje.

Considere la siguiente función:

function init() {
    var username = "develop_andrade";
    function displayUsername() {
        alert(username);
    }
   displayName();
}
init();  

Ahora haremos algo un poco mas complicado

var likeDislike = function(username){
var contadorPrivado = 0;

function change(val){
    contadorPrivado += val
}

return {
    {
    like: function() {
      change(1);
    },
    dislike: function() {
      change(-1);
    },
    likes: function() {
        //aqui podriamos hacer una llamada al api de facebook para saber el numero de amigos que tiene el username
        //por el momento solo retornaremos el el valor del contador
      return contadorPrivado;
    }
}
}
var contador1 = likeDislike('develop_andrade');
var contador2 = likeDislike('some_username');
contador1.increment()
contador1.increment()
contador1.increment()
contador1.increment()
contador2.increment()
contador2.increment()
contador2.increment()
alert(contador1.likes())//muestra 4
alert(contador2.likes())//muestra 3