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.