1
+ /*
2
+ * EJERCICIO:
3
+ * - Crea ejemplos de funciones básicas que representen las diferentes
4
+ * posibilidades del lenguaje:
5
+ * Sin parámetros ni retorno, con uno o varios parámetros, con retorno...
6
+ * - Comprueba si puedes crear funciones dentro de funciones.
7
+ * - Utiliza algún ejemplo de funciones ya creadas en el lenguaje.
8
+ * - Pon a prueba el concepto de variable LOCAL y GLOBAL.
9
+ * - Debes hacer print por consola del resultado de todos los ejemplos.
10
+ * (y tener en cuenta que cada lenguaje puede poseer más o menos posibilidades)
11
+ *
12
+ * */
13
+ function optNoReturn ( ) {
14
+ console . log ( 'Esta función sin params y no retorna nada, solo imprime.' ) ;
15
+ }
16
+
17
+ function optWithReturn ( ) {
18
+ const str = 'Esta otra función retorna una string, que se puede imprimir' ;
19
+ return str ;
20
+ }
21
+
22
+ function optWithParamsAndNoReturn ( printThis ) {
23
+ console . log ( printThis ) ;
24
+ }
25
+
26
+ function optWithParamsWithReturnDouble ( returnThis ) {
27
+ return returnThis * 2 ;
28
+ }
29
+
30
+ const doubleThis = optWithParamsWithReturnDouble ( 4 )
31
+
32
+ function higherOrderFunction ( value ) {
33
+ return function insideFunction ( factor ) {
34
+ return value * factor
35
+ }
36
+ }
37
+
38
+ var iAmGlobal = "soy una variable global"
39
+
40
+ function defineScope ( ) {
41
+ let iAmLocal = "Soy una variable local"
42
+
43
+ console . log ( { iAmGlobal} )
44
+ console . log ( { iAmLocal} )
45
+ }
46
+
47
+ optNoReturn ( ) ;
48
+ console . log ( optWithReturn ( ) ) ;
49
+ optWithParamsAndNoReturn ( 'Whaaaat?' ) ;
50
+ console . log ( optWithParamsWithReturnDouble ( 2 ) ) ;
51
+ console . log ( doubleThis )
52
+
53
+ // Uso de función que retorna otra función
54
+ const doubleThisAgain = higherOrderFunction ( 2 ) ;
55
+ console . log ( doubleThisAgain ( 4 ) ) ; // Outputs: 8
56
+
57
+ defineScope ( ) ;
58
+ console . log ( "esto no funciona: " , { iAmLocal} )
59
+
60
+
61
+
62
+
63
+ /*
64
+ * DIFICULTAD EXTRA (opcional):
65
+ * Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número.
66
+ * - La función imprime todos los números del 1 al 100. Teniendo en cuenta que:
67
+ * - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro.
68
+ * - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro.
69
+ * - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas.
70
+ * - La función retorna el número de veces que se ha impreso el número en lugar de los textos.
71
+ *
72
+ * Presta especial atención a la sintaxis que debes utilizar en cada uno de los casos.
73
+ * Cada lenguaje sigue una convenciones que debes de respetar para que el código se entienda.
74
+ */
75
+
76
+ function extraJob ( string1 , string2 ) {
77
+ let counter = 0 ;
78
+ let min = 1 ;
79
+ let max = 100 ;
80
+
81
+ for ( let i = min ; i <= max ; i ++ ) {
82
+ if ( i % 3 === 0 && i % 5 === 0 ) {
83
+ console . log ( string1 + string2 ) ;
84
+ } else if ( i % 3 === 0 ) {
85
+ console . log ( string1 ) ;
86
+ } else if ( i % 5 === 0 ) {
87
+ console . log ( string2 ) ;
88
+ } else {
89
+ console . log ( i ) ;
90
+ counter += 1 ;
91
+ }
92
+ }
93
+
94
+ return counter ;
95
+ }
96
+
97
+ // Llamada de ejemplo a la función
98
+ console . log ( "Número de veces que se ha impreso el número:" , extraJob ( "Ola" , "Kease" ) ) ;
0 commit comments