Privacidad de datos usando cierres en JavaScript

Primero comprendamos qué son los cierres en Javascript.

Cierres: una función junto con una referencia al entorno exterior juntos forman un cierre. En otras palabras, podemos decir que es una combinación de una función y su alcance léxico agrupados, lo que significa que la función interna tiene acceso a su entorno léxico externo, es decir, el acceso a las variables de la función principal forma un cierre.

Ejemplo:

Javascript

<script>
function x() {
    var a = "GeeksforGeeks";
    function y() {
        console.log(a);
    }
    return y;
}
x()();
</script>

Producción:

Antes de hablar sobre la privacidad de los datos, comprendamos la encapsulación y la ocultación de datos.

La ocultación de datos es como si tuviéramos una variable y queremos privacidad sobre ella para que ninguna otra función u otra parte del código pueda tener acceso a ella. Se denomina ocultación de datos o privacidad de datos. En otras palabras, solo estamos encapsulando los datos para que otras partes del código no puedan acceder a ellos.

Entendamos con la ayuda de un ejemplo: aquí tenemos una variable de contador a la que podemos acceder desde el exterior de la función de aumento desde una parte del código.

Javascript

<script>
    var counter = 0;
  
    function increase() {
        counter++;
        console.log("Access of counter from inside "
            + "the function as it forms a closure", 
            counter);
    }
  
    increase();
      
    // No data Privacy
    console.log("Accessed from outside also no "
        + "data privacy", counter);
</script>

Producción:

Entonces, en la parte anterior, podemos ver que los datos no están ocultos o no hay privacidad de datos.

Ahora apliquemos el concepto de cierres. Envolveremos la función de aumento con una función. De modo que la función de aumento solo tendrá acceso a su entorno léxico.

Javascript

<script>
    function count() {
        var counter = 0;
        function increase() {
            counter++;
            console.log("Access of counter from "
                + "inside the function as it forms"
                + " a closure", counter);
        }
        return increase;
    }
  
    count()();
      
    // Data Privacy is there is
    // it will throw error
    console.log("Accessed from outside also no"
        + " data privacy", counter);
</script>

Producción:

Aquí ahora, después de envolver la función de aumento en una función, podemos mantener la privacidad de los datos y no podemos llamar al contador fuera de la función. Todo esto se debe a los cierres. Desempeñó el papel principal al limitar el acceso del contador dentro del entorno léxico de la función de aumento.

Publicación traducida automáticamente

Artículo escrito por user_u3so y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *