(Clausuras o funciones de cierre)

<aside> 馃搶 Todo en JavaScript es un objeto.

</aside>

Un聽closure聽es la combinaci贸n entre una funci贸n y el 谩mbito l茅xico en el que esta fue declarada. Con esto, la funci贸n聽recuerda聽el 谩mbito en el que se cre贸. La mejor forma de entender un closure es por medio de un ejemplo pr谩ctico.

var myVar = 'hi';
function myFunction() {
	console.log(myVar);
}
myFuntion(); // hi

Los closures son b谩sicamente cuando aprovechamos la habilidad de JavaScript de usar las variables que est谩n en el scope padre de nuestro bloque de c贸digo, por eso el global scope es un closure grandote; el bloque myFunction puede usar TODAS las variables que est谩n disponibles en el bloque inmediato anterior.

Los Closures se usaban bastante como las clases antes de ES6, ya que es una manera de mantener variables casi privadas. Qu茅 no se pueda acceder a ellas por fuera.

Variables privadas con Closures

JS por su naturaleza no fomenta el uso de datos privados pero por medio de los Closures podemos crear valores que solo puedan ser accedidos por medio de m茅todos, que no van a estar disponibles fuera de esta funci贸n.

const person = () => {
    var savedName = 'Wade';

    return {
        getName: () => {
            return savedName;
        },
        setName: (name) => {
            savedName = name;
        },
    };
};

let newPerson = person();
console.log(newPerson.getName());
newPerson.setName('Ricardo');
console.log(newPerson.getName());

Loops

En un loop nunca ocupar聽var, siempre utilizar聽let聽para valores que ir谩n cambiando dentro de la ejecuci贸n del scope. de lo contrario se genera un closure dentro del ciclo.

MATERIAL EXTRA

21. CLAUSURAS (Closures) EN JAVASCRIPT

Ejemplos Completos de Closures

closures-y-scopes-con-Javascript/src/closure at main 路 Ricar8o/closures-y-scopes-con-Javascript