Skip to content

Commit d2841ea

Browse files
authored
Merge pull request mouredev#7949 from AlexanderTejedor/main
# 02 - JavaScript
2 parents c617874 + 6a73d0e commit d2841ea

File tree

1 file changed

+154
-0
lines changed

1 file changed

+154
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
//Funciones Basicas
2+
/**
3+
* Función Tradicional
4+
* Sin parametros
5+
*/
6+
function myFunction() { return console.log('Esta es una función') };
7+
myFunction();
8+
/**Con Parametro */
9+
function saludar (name){ return console.log(`Hola ${name}`) };
10+
saludar('JavaScript');
11+
/**Con mas parametros */
12+
function suma (a,b) { return console.log('El resultado de la suma es: ' + (a + b)) };
13+
suma(2, 3);
14+
15+
/**Función anónima */
16+
let despedida = function (nombre) { return console.log(`Esta mi canción de despedida ${nombre}`) };
17+
despedida('Sera lo mejor para los dos');
18+
19+
let despedirse = function (name) { return `Hasta luego ${name}`; };
20+
console.log(despedirse('Alex'));
21+
22+
/**Función de flecha */
23+
const multiplicar = (a, b) => a * b ;
24+
console.log(multiplicar( 28, 32 ));
25+
26+
/**Función con parámetros por Defecto */
27+
let saludarConIdioma = (nombre, idioma = 'es') => { return idioma === 'es' ? `Hola ${nombre}` : `Hello ${nombre}`; }
28+
console.log(saludarConIdioma('JavaScript'));
29+
console.log(saludarConIdioma('JavaScript', 'en'));
30+
31+
/**Función autoejecutable (IIFE) */
32+
(function(){console.log('Esta funcion se ejecuta inmediatamente.');})
33+
();
34+
35+
/**Función recursiva */
36+
function factorial (n) { return n === 0 ? 1 : n * factorial(n - 1) };
37+
console.log(factorial(5));
38+
39+
/**Función de orden superior (High Order Function) */
40+
function operar (a, b, operacion) { return operacion(a, b) };
41+
const sumar = (x, y) => x + y;
42+
console.log(operar(5, 78, sumar));
43+
44+
/**Función que devuelve otra función (closures) */
45+
function crearSaludo(saludo) { return function (nombre) { return `${saludo} ${nombre}` } };
46+
const saludoFormal = crearSaludo('Buenos días');
47+
console.log(saludoFormal('JavaScript'));
48+
49+
/**Función asíncrona con async/await */
50+
async function obtenerDatos() { return new Promise(resolve => setTimeout(() => resolve("Datos recibidos"), 2000));}
51+
obtenerDatos().then(console.log);
52+
53+
/**Función con Callbacks */
54+
function procesarUsuario(nombre, callback) { console.log(`Procesando usuario ${nombre}...`);
55+
callback();}
56+
procesarUsuario("Luis", () => console.log("Usuario procesado."));
57+
58+
/**Función constructora */
59+
function Persona(nombre, edad) {
60+
this.nombre = nombre;
61+
this.edad = edad;
62+
this.saludar = function() {
63+
return `Hola, soy ${this.nombre} y tengo ${this.edad} años.`;
64+
};
65+
}
66+
const persona1 = new Persona("Luis", 30);
67+
console.log(persona1.saludar());
68+
69+
/**Función generadora ( function* ) */
70+
function* contar() { yield 1; yield 2; yield 3; }
71+
const generador = contar();
72+
console.log(generador.next().value);
73+
console.log(generador.next().value);
74+
console.log(generador.next().value);
75+
76+
/**Función con bind() */
77+
const usuario = { nombre: "Ana", saludar: function() { console.log(`Hola, soy ${this.nombre}`); }};
78+
const nuevaFuncion = usuario.saludar.bind(usuario);
79+
nuevaFuncion();
80+
81+
/**Función con call() y apply()*/
82+
function presentar (cargo) { console.log(`Hola, soy ${this.nombre} y trabajo como ${cargo}`);}
83+
const persona = { nombre: "Carlos" };
84+
presentar.call(persona, "desarrollador");
85+
presentar.apply(persona, ["diseñador"]);
86+
87+
/**Funciones como Métodos y Objetos */
88+
const coche = { marca: "Toyota",arrancar: function() { return `${this.marca} está arrancando...`;} };
89+
console.log(coche.arrancar());
90+
91+
/**Funciones como parametros callback */
92+
function operar(a, b, operacion) {
93+
return operacion(a, b);
94+
}
95+
console.log(operar(5, 3, (x, y) => x - y)); // Resta
96+
97+
/**Función en clases */
98+
class Animal {
99+
constructor(nombre) {
100+
this.nombre = nombre;
101+
}
102+
hablar() {
103+
return `${this.nombre} hace un sonido.`;
104+
}
105+
}
106+
const perro = new Animal("Perro");
107+
console.log(perro.hablar());
108+
109+
//Variable local y global (scope)
110+
111+
/**Scope global */
112+
var nombre = 'Alexander';
113+
var nombreCompleto = () => {
114+
/**Scope Local */
115+
let apellido = 'Tejedor';
116+
console.log(`Hola, ${nombre} ${apellido}`)
117+
}
118+
// try{
119+
// nombreCompleto()
120+
// console.log(apellido)
121+
// }catch (error) {
122+
// console.error(error);
123+
// }
124+
125+
/**DIFICULTAD EXTRA (opcional):
126+
* Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número.
127+
* - La función imprime todos los números del 1 al 100. Teniendo en cuenta que:
128+
* - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro.
129+
* - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro.
130+
* - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas.
131+
* - La función retorna el número de veces que se ha impreso el número en lugar de los textos.
132+
* */
133+
134+
let myFunc = (str1, str2) => {
135+
let contador = 0;
136+
for (i = 1; i <= 100; i++){
137+
let cadena1 = String(str1);
138+
let cadena2 = String(str2);
139+
140+
if (i % 3 === 0 && i % 5 === 0){
141+
console.log(i + ' ' + cadena1 + ' ' + cadena2)
142+
}else if (i % 3 === 0){
143+
console.log(cadena1)
144+
}else if (i % 5 === 0){
145+
console.log(cadena2)
146+
}else{
147+
console.log(i)
148+
contador++;
149+
}
150+
}
151+
return contador;
152+
};
153+
let resultado = myFunc('Hola', 'JavaScript');
154+
console.log(`Se han impreso los numeros ${resultado} veces en vez de textos`);

0 commit comments

Comments
 (0)