variables - javascript closures explained - ¿Cómo funcionan los cierres de JavaScript?

jquery closure example / javascript / function / scope / closures

¿Cómo explicarías los cierres de JavaScript a alguien que conoce los conceptos en los que consisten (por ejemplo,funciones,variables y similares),pero que no entiende los cierres en sí?

28 revs, 21 users 17%



Answer #1

Había una princesa...

function princess() {

Vivía en un mundo maravilloso lleno de aventuras.Conoció a su príncipe azul,recorrió su mundo en un unicornio,luchó contra dragones,se encontró con animales parlantes y muchas otras cosas fantásticas.

    var adventures = [];

    function princeCharming() { /* ... */ }

    var unicorn = { /* ... */ },
        dragons = [ /* ... */ ],
        squirrel = "Hello!";

    /* ... */

Pero siempre tendría que volver a su aburrido mundo de tareas y adultos.

    return {

Y a menudo les contaba su última y sorprendente aventura como princesa.

        story: function() {
            return adventures[adventures.length - 1];
        }
    };
}

Pero todo lo que verían es una niña pequeña...

var littleGirl = princess();

... contando historias sobre magia y fantasía.

littleGirl.story();