Skip to content

Commit 52bb21f

Browse files
committed
Solve JavaScript exercise 02
1 parent e8d0d5e commit 52bb21f

File tree

1 file changed

+114
-0
lines changed

1 file changed

+114
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
// FUNCIONES -- FUNCTIONS
2+
console.log("Funciones\n");
3+
// FUNCIÓN POR DEFINICIÓN -- Function Declaration
4+
function greet() {
5+
// Función sin retorno
6+
console.log("Hi from function declaration");
7+
}
8+
9+
// FUNCIÓN POR EXPRESIÓN -- Function Expression
10+
// Puede ser una función anónima (lambda) o tener nombre
11+
12+
// Función anónima (lambda)
13+
const greeting = function () {
14+
// Función con retorno, en este caso, un string
15+
return "Hello from fn expression";
16+
};
17+
18+
// Función con nombre
19+
const sum = function sum(a, b) {
20+
console.log(`La suma de a + b es = ${a + b}`);
21+
};
22+
//
23+
24+
// FUNCIÓN AUTOINVOCADA - Immediately Invoked Function Expression (IIFE)
25+
26+
// IIFE imprimiendo en consola
27+
(function (name) {
28+
console.log(`*** IIFE Saludo autoinvocado de ${name}`);
29+
})("Daniel");
30+
31+
// IIFE con return y guardando su valor en una variable
32+
const greetFromIIFE = (function (name) {
33+
return `Saludo autoinvocado de ${name}`;
34+
})("Pablo");
35+
console.log(`*** IIFE: ${greetFromIIFE}`);
36+
37+
// CLAUSURAS -- Closures
38+
// Funciones dentro de otras ✅
39+
function squares(a, b) {
40+
// La función interna (square) puede acceder al scope y variables de la función que la contiene (squares) pero no pasa lo contrario
41+
function square(x) {
42+
// Aquí se forma el Closure
43+
return x * x;
44+
}
45+
console.log(square(a) + square(b));
46+
return square(a) + square(b);
47+
}
48+
49+
// ARROW FUNCTIONS
50+
// Siempre son anónimas
51+
// No tienen this
52+
const myArrowFn = () => console.log("Log from Arrow Function");
53+
54+
// CALLBACKS
55+
const myCallback = () => console.log("Log desde callback function");
56+
57+
const mainFunction = (cb) => cb();
58+
59+
// HOF -- High Order Functions
60+
// Funciones que reciben por parámetro otra función y/o devuelven una función mediante el return.
61+
function doubleOperationHOF(arr, operation) {
62+
return arr.map(operation)
63+
}
64+
65+
const double = function (number) {
66+
return number * 2
67+
};
68+
69+
const numbers = [1, 2, 3, 4, 5];
70+
const doubledNumbers = doubleOperationHOF(numbers, double)
71+
72+
73+
// EJECUCIÓN DE FUNCIONES -- Function execution
74+
console.log('\nFunction Logs\n')
75+
greet();
76+
greeting();
77+
sum(2, 8);
78+
squares(2, 3);
79+
myArrowFn();
80+
mainFunction(myCallback);
81+
console.log(doubledNumbers)
82+
83+
// VARIABLES
84+
console.log("\nVariables\n");
85+
86+
let myGlobal = "Pedro";
87+
88+
const myFn = () => {
89+
let myLocal = "David";
90+
console.log(`** Esta es mi variable global: ${myGlobal}`);
91+
console.log(`** Esta es mi variable local dentro de myFn: ${myLocal}`);
92+
};
93+
94+
myFn();
95+
96+
// RETO EXTRA
97+
console.log("\n------ RETO EXTRA ------");
98+
99+
const challengeFn = (arg1, arg2) => {
100+
let counter = 0;
101+
for (let i = 1; i <= 100; i++) {
102+
if (i % 3 === 0 && i % 5 === 0) console.log(`${i} es ${arg1} y ${arg2}`);
103+
else if (i % 3 === 0) console.log(`${i} es ${arg1}`);
104+
else if (i % 5 === 0) console.log(`${i} es ${arg2}`);
105+
else {
106+
console.log(i);
107+
counter++;
108+
}
109+
}
110+
console.log(`\nLas veces que se imprimió un número fue de: ${counter}`);
111+
return counter;
112+
};
113+
114+
challengeFn("multiplo de 3", "multiplo de 5");

0 commit comments

Comments
 (0)