Last Updated: February 25, 2016
·
710
· 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

Have a fresh tip? Share with Coderwall community!

Post
Post a tip
Did you know?

JavaScript on a page runs with the privileges of that origin. One altered library, tag manager, or snippet can read inputs, change what people see, and call your APIs as the user.

Security insights from Cside