1+ /*
2+ * EJERCICIO:
3+ * - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según
4+ * su tipo de dato.
5+ * - Muestra ejemplos de funciones con variables que se les pasan "por valor" y
6+ * "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas.
7+ * (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes)
8+ *
9+ * DIFICULTAD EXTRA (opcional):
10+ * Crea dos programas que reciban dos parámetros (cada uno) definidos como
11+ * variables anteriormente.
12+ * - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia.
13+ * Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno
14+ * se asigna a dos variables diferentes a las originales. A continuación, imprime
15+ * el valor de las variables originales y las nuevas, comprobando que se ha invertido
16+ * su valor en las segundas.
17+ * Comprueba también que se ha conservado el valor original en las primeras.
18+ */
19+
20+
21+ const a = 10 ;
22+
23+ const modificandoCopia = ( a ) => a = 30 ;
24+
25+
26+ modificandoCopia ( a ) ;
27+
28+ console . log ( a ) ;
29+
30+ const p = {
31+ nombre : 'Teseo'
32+ }
33+
34+ const modificandoReferencia = ( p ) => p . nombre = 'Egeo' ;
35+
36+ modificandoReferencia ( p ) ;
37+
38+ console . log ( p ) ;
39+
40+
41+ const edad = 25 ;
42+ const nombre = 'Caterina' ;
43+
44+ const intercambioValores = ( a , b ) => {
45+ let valorA = a ;
46+
47+ a = b ;
48+ b = valorA ;
49+
50+ return { a, b}
51+ }
52+
53+ const { a : edad2 , b : nombre2 } = intercambioValores ( edad , nombre ) ;
54+
55+ console . log ( 'antes:' , edad , nombre ) ;
56+ console . log ( 'después:' , edad2 , nombre2 ) ;
57+
58+ const obj1 = { nombre : 'John B.' }
59+ const obj2 = { nombre : 'Ada Lovelace' }
60+ const intercambioReferencias = ( obj1 , obj2 ) => {
61+
62+ let temp = obj1 ;
63+ obj1 = obj2 ;
64+ obj2 = temp ;
65+
66+ return { obj1, obj2}
67+ }
68+
69+ const { obj1 : obj1Interchanged , obj2 : obj2Interchanged } = intercambioReferencias ( obj1 , obj2 ) ;
70+
71+ console . log ( 'originales' ) ;
72+ console . log ( obj1 ) ;
73+ console . log ( obj2 ) ;
74+ console . log ( 'intercambiados' ) ;
75+ console . log ( obj1Interchanged ) ;
76+ console . log ( obj2Interchanged ) ;
0 commit comments