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