Skip to content

Commit 048efc8

Browse files
committed
Clase 1 Intermedio | 29/01/2025
Funciones avanzadas
1 parent 71cac10 commit 048efc8

3 files changed

Lines changed: 186 additions & 4 deletions

File tree

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
/*
2+
Clase 1 - Funciones avanzadas (29/01/2025)
3+
Vídeo: https://www.twitch.tv/videos/2367024319?t=00h08m45s
4+
*/
5+
6+
// Ciudadanos de primera clase
7+
8+
const greet = function (name) {
9+
console.log(`Hola, ${name}`)
10+
}
11+
12+
greet("Brais")
13+
14+
function processGreeting(greetFunction, name) {
15+
greetFunction(name)
16+
}
17+
18+
function returnGreeting() {
19+
return greet
20+
}
21+
22+
processGreeting(greet, "MoureDev")
23+
const greet2 = returnGreeting()
24+
greet2("Brais Moure")
25+
26+
// Arrow functions avanzadas
27+
28+
// - Retorno implícito
29+
const multiply = (a, b) => a * b
30+
console.log(multiply(2, 5))
31+
32+
// - this léxico
33+
const handler = {
34+
name: "Brais",
35+
greeting: function () {
36+
console.log(`Hola, ${this.name}`)
37+
},
38+
arrowGreeting: () => {
39+
console.log(`Hola, ${this.name}`)
40+
}
41+
}
42+
43+
handler.greeting()
44+
handler.arrowGreeting();
45+
46+
// IIFE (Expresión de Función Invocada Inmediatamente)
47+
48+
(function () {
49+
console.log("IIFE clásico")
50+
})();
51+
52+
(() => {
53+
console.log("IIFE con arrow function")
54+
})();
55+
56+
// Parámetros Rest (...)
57+
58+
function sum(...numbers) {
59+
let result = 0
60+
for (let number of numbers) {
61+
result += number
62+
}
63+
return result
64+
}
65+
66+
console.log(sum(1, 2, 3, 4, 5))
67+
console.log(sum(10, 15))
68+
69+
// Operador Spread (...)
70+
71+
const numbers = [1, 2, 3]
72+
function sumWithSpread(a, b, c) {
73+
return a + b + c
74+
}
75+
76+
console.log(sumWithSpread(1, 2, 3)) // Sin Spread
77+
console.log(sumWithSpread(...numbers)) // Con Spread
78+
79+
// Closures (Clausuras)
80+
81+
function createCounter() {
82+
let counter = 0
83+
return function () {
84+
counter++
85+
console.log(`Contador: ${counter}`)
86+
}
87+
}
88+
89+
const counter = createCounter()
90+
counter()
91+
counter()
92+
counter()
93+
counter()
94+
95+
// Recursividad
96+
97+
function factorial(n) {
98+
if (n <= 1) {
99+
return 1
100+
}
101+
return n * factorial(n - 1)
102+
}
103+
104+
console.log(factorial(5))
105+
106+
// Funciones parciales
107+
108+
function partialSum(a) {
109+
return function (b, c) {
110+
return sum(a, b, c)
111+
}
112+
}
113+
114+
const sumWith = partialSum(4)
115+
console.log(sumWith(2, 3))
116+
console.log(sumWith(1, 2))
117+
118+
// Currying
119+
120+
function currySum(a) {
121+
return function (b) {
122+
return function (c) {
123+
return function (d) {
124+
return sum(a, b, c, d)
125+
}
126+
}
127+
}
128+
}
129+
130+
const sumAB = currySum(1)(2)
131+
const sumC = sumAB(3)
132+
console.log(sumC(3))
133+
console.log(sumC(4))
134+
console.log(sumAB(5)(7))
135+
136+
// Callbacks
137+
138+
function processData(data, callback) {
139+
const result = sum(...data)
140+
callback(result)
141+
}
142+
143+
function processResult(result) {
144+
console.log(result)
145+
}
146+
147+
function processResult2(result) {
148+
console.log(`Mi resultado es: ${result}`)
149+
}
150+
151+
processData([1, 2, 3], processResult)
152+
processData([1, 2, 3], processResult2)
153+
processData([1, 2, 3], (result) => {
154+
console.log(`Mi resultado en la arrow function es: ${result}`)
155+
})
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
Clase 1 - Funciones avanzadas (29/01/2025)
3+
Vídeo: https://www.twitch.tv/videos/2367024319?t=00h08m45s
4+
*/
5+
6+
// 1. Crea una función que retorne a otra función
7+
8+
// 2. Implementa una función currificada que multiplique 3 números
9+
10+
// 3. Desarrolla una función recursiva que calcule la potencia de un número elevado a un exponente
11+
12+
// 4. Crea una función createCounter() que reciba un valor inicial y retorne un objeto con métodos para increment(), decrement() y getValue(), utilizando un closure para mantener el estado
13+
14+
// 5. Crea una función sumManyTimes(multiplier, ...numbers) que primero sume todos los números (usando parámetros Rest) y luego multiplique el resultado por multiplier
15+
16+
// 6. Crea un Callback que se invoque con el resultado de la suma de todos los números que se le pasan a una función
17+
18+
// 7. Desarrolla una función parcial
19+
20+
// 8. Implementa un ejemplo que haga uso de Spread
21+
22+
// 9. Implementa un retorno implícito
23+
24+
// 10. Haz uso del this léxico

README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,19 @@
99
### Proyecto realizado durante emisiones en directo desde [Twitch](https://twitch.tv/mouredev)
1010
> ##### Si consideras útil el curso, apóyalo haciendo "★ Star" en el repositorio. ¡Gracias!
1111
12-
## 🆕 NUEVO: Curso Intermedio
12+
## 🆕 NUEVO: Curso Intermedio [En desarrollo]
1313

1414
<a href="https://twitch.tv/mouredev"><img src="./Images/intermediate.jpg" style="height: 50%; width:50%;"/></a>
1515

1616
### Curso de fundamentos intermedio (continuación del desde cero). Nueva clase cada semana.
1717

18-
### 🔴 PRÓXIMA CLASE EN DIRECTO: Miércoles 29 de enero a las 20:00h (España) en [Twitch](https://twitch.tv/mouredev)
19-
### 🗓️ CONSULTA EL HORARIO POR PAÍS Y CREA UN RECORDATORIO desde [Discord](https://discord.gg/3WmpXMQj?event=1331897476873060446)
18+
#### 🔴 PRÓXIMA CLASE EN DIRECTO: Miércoles 5 de febreto a las 20:00h (España) en [Twitch](https://twitch.tv/mouredev) y [YouTube](https://youtube.com/@mouredev)
19+
#### 🗓️ CONSULTA EL HORARIO POR PAÍS Y CREA UN RECORDATORIO desde [Discord](https://discord.gg/3WmpXMQj?event=1334269133906382999)
2020

21-
*Aquí encontrarás toda la información de las clases grabadas y el material utilizado.*
21+
* Clase 1 [29/01/2025] - Funciones avanzadas
22+
* [Vídeo](https://www.twitch.tv/videos/2367024319?t=00h08m45s)
23+
* [Código](./Intermediate/00-advanced-functions.js)
24+
* [Ejericios](./Intermediate/01-advanced-functions-exercises.js)
2225

2326
## Clases en vídeo
2427

0 commit comments

Comments
 (0)