Tienes un closure cuando una función cualquiera accede a una variable fuera de su contexto y la recuerda
ámbito léxico describe cómo las funciones anidadas tienen acceso a las variables definidas en los ámbitos de sus padres
https://www.youtube.com/watch?v=JXG_gQ0OF74
Tutorial de cláusula de JavaScript: cómo funcionan las cláusulas y el ámbito (scope) léxico en JS
Los closures permiten acceder al ámbito de una función exterior desde una función interior.
Los Closures son funciones que retornan otras funciones y recuerdan el scope en el que fueron creadas
function buildSun(a) {
return function(b) {
return a + b
}
}
const addFive = buildSun(5)
console.log(addFive(5)) //10
// funcion flecha
const buildSun = (a) => (b) => a + b
Utilizan sus propias variables independientes
function moneyBox() {
let saveCoins = 0;
function countCoins(coins) {
saveCoins += coins;
console.log(`MoneyBox: $${saveCoins}`)
}
return countCoins;
}
const myMoneyBox = moneyBox();
myMoneyBox(5);
myMoneyBox(5);
myMoneyBox(15);
const moneyBoxAna = moneyBox();
moneyBoxAna(10);
moneyBoxAna(20);
moneyBoxAna(5);
<aside> 📌 SUMMARY: Los closures son funciones que retornan otras funciones y recuerdan el scope (ámbito léxico) en el que fueron creadas.
</aside>