parent
31a0721d07
commit
44e4782cb9
@ -0,0 +1,105 @@
|
|||||||
|
<div align="center">
|
||||||
|
<h1> 30 Días de JavaScript: Closures</h1>
|
||||||
|
<a class="header-badge" target="_blank" href="https://www.linkedin.com/in/asabeneh/">
|
||||||
|
<img src="https://img.shields.io/badge/style--5eba00.svg?label=LinkedIn&logo=linkedin&style=social">
|
||||||
|
</a>
|
||||||
|
<a class="header-badge" target="_blank" href="https://twitter.com/Asabeneh">
|
||||||
|
<img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/asabeneh?style=social">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<sub>Autor:
|
||||||
|
<a href="https://www.linkedin.com/in/asabeneh/" target="_blank">Asabeneh Yetayeh</a><br>
|
||||||
|
<small> Enero, 2020</small>
|
||||||
|
</sub>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
[<< Día 18](../dia_18_Promesas/dia_18_Promesas.md) | [Día 20 >>](..)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- [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 >>](..)
|
Loading…
Reference in new issue