diff --git a/Spanish/dia_18_Promesas/dia_18_Promesas.md b/Spanish/dia_18_Promesas/dia_18_Promesas.md index a9aebc55..8af01c8b 100644 --- a/Spanish/dia_18_Promesas/dia_18_Promesas.md +++ b/Spanish/dia_18_Promesas/dia_18_Promesas.md @@ -14,7 +14,7 @@ -[<< Día 17](../dia_17_Web_storages/dia_17_web_storages.md) | [Día 19>>](..) +[<< Día 17](../dia_17_Web_storages/dia_17_web_storages.md) | [Día 19>>](../dia_19_Closures/dia_19_closures.md) ![Thirty Days Of JavaScript](../images/banners/day_1_18.png) @@ -270,4 +270,4 @@ const catsAPI = "https://api.thecatapi.com/v1/breeds"; 🎉 ¡FELICITACIONES! 🎉 -[<< Día 17](../dia_17_Web_storages/dia_17_web_storages.md) | [Día 19>>](..) +[<< Día 17](../dia_17_Web_storages/dia_17_web_storages.md) | [Día 19>>](../dia_19_Closures/dia_19_closures.md) diff --git a/Spanish/dia_19_Closures/dia_19_closures.md b/Spanish/dia_19_Closures/dia_19_closures.md new file mode 100644 index 00000000..4f6df258 --- /dev/null +++ b/Spanish/dia_19_Closures/dia_19_closures.md @@ -0,0 +1,105 @@ +
+ +[<< Día 18](../dia_18_Promesas/dia_18_Promesas.md) | [Día 20 >>](..) + +![Thirty Days Of JavaScript](../images/banners/day_1_19.png) + +- [Día 19](#día-19) + - [Closure](#closure) + - [Ejercicios](#exercises) + - [Ejercicios: Nivel 1](#exercises-level-1) + - [Ejercicios: Nivel 2](#exercises-level-2) + - [Ejercicios: Nivel 3](#exercises-level-3) + +# Día 19 + +## Closure + +JavaScript permite escribir una función dentro de una función externa. Podemos escribir tantas funciones internas como queramos. Si la función interna accede a las variables de la función externa entonces se llama closure (clausura). + +```js +function outerFunction() { + let count = 0; + function innerFunction() { + count++; + return count; + } + + return innerFunction; +} +const innerFunc = outerFunction(); + +console.log(innerFunc()); +console.log(innerFunc()); +console.log(innerFunc()); +``` + +```sh +1 +2 +3 +``` + +Veamos más ejemplos de funciones internas + +```js +function outerFunction() { + let count = 0; + function plusOne() { + count++; + return count; + } + function minusOne() { + count--; + return count; + } + + return { + plusOne: plusOne(), + minusOne: minusOne(), + }; +} +const innerFuncs = outerFunction(); + +console.log(innerFuncs.plusOne); +console.log(innerFuncs.minusOne); +``` + +```sh +1 +0 +``` + +🌕 Estás haciendo progresos. Mantén tu ritmo, sigue con el buen trabajo. Ahora haz algunos ejercicios para tu cerebro y para tus músculos. + +## Ejercicios + +### Ejercicios: Nivel 1 + +1. Crear una closure que tenga una función interna + +### Ejercicios: Nivel 2 + +1. Crear una closure que tenga tres funciones internas + +### Ejercicios: Nivel 3 + +1. Crear una función de salida de personAccount. Tiene variables internas de nombre, apellido, ingresos y gastos. Tiene las funciones internas totalIncome, totalExpense, accountInfo,addIncome, addExpense y accountBalance. Los ingresos son un conjunto de ingresos y su descripción y los gastos son también un conjunto de gastos con su descripción. + +🎉 ¡FELICITACIONES! 🎉 + +[<< Día 18](../dia_18_Promesas/dia_18_Promesas.md) | [Día 20 >>](..)