function - variables en javascript - ¿Cómo funcionan los cierres de JavaScript?

variables globales javascript / javascript / variables / 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

Los cierres se utilizan a menudo para crear funciones con algunos datos privados ocultos (pero no es siempre el caso).

var db = (function() {
    // Crea un objeto oculto, que contendrá los datos
    // es inaccesible desde el exterior.
    var data = {};

    // Crea una función, que proporcionará algún acceso a los datos.
    return function(key, val) {
        if (val === undefined) { return data[key] } // Obtener
        else { return data[key] = val } // Colocar
    }
    // Estamos llamando a la función circundante anónima,
    // devolviendo la función interna anterior, que es un cierre.
})();

db('x')    // -> indefinido
db('x', 1) // Establecer x en 1
db('x')    // -> 1
// Es imposible acceder al objeto de datos en sí.
// Podemos obtenerlo o configurarlo individualmente.