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