|
| 1 | +/** #05 - javaScript VALOR Y REFERENCIA |
| 2 | + * Date: 03/01/2025 |
| 3 | + * Author: Yoandy Doble Herrera |
| 4 | + */ |
| 5 | + |
| 6 | +/* |
| 7 | +EJERCICIO: |
| 8 | +- Muestra ejemplos de asignación de variables "por valor" y "por referencia" según su tipo de dato. |
| 9 | +- Muestra ejemplos de funciones con variables que se les pasan "por valor" y "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas. (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes) |
| 10 | +
|
| 11 | +DIFICULTAD EXTRA (opcional): |
| 12 | +Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente. |
| 13 | +- Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia. |
| 14 | +Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas. |
| 15 | +Comprueba también que se ha conservado el valor original en las primeras. |
| 16 | +*/ |
| 17 | + |
| 18 | +/* Asignación por valor */ |
| 19 | +let usuario = "codebydoble" |
| 20 | +const distancia = 10000 |
| 21 | +let userCopy = "@" + usuario |
| 22 | + |
| 23 | +console.log(usuario) |
| 24 | +console.log(distancia) |
| 25 | +console.log(userCopy) |
| 26 | + |
| 27 | +/* Asignación de variables por referencia */ |
| 28 | + |
| 29 | +const librosTech = ["De 0 a Experto", "Github ++", "100 Horas de código", "Javascript Eloquent"] |
| 30 | +const personalBook = librosTech |
| 31 | + |
| 32 | +librosTech.push("Mouredev la guía definitiva") // se actualiza en ambos array |
| 33 | +console.log(librosTech) |
| 34 | +console.log(personalBook) |
| 35 | + |
| 36 | +/* Funciones con valores primitivos */ |
| 37 | + |
| 38 | +/** |
| 39 | + * Simula un juego |
| 40 | + * @param {number} participantes Númeto total de participantes en el juego |
| 41 | + * @returns Retorna la cantidad de participantes |
| 42 | + */ |
| 43 | +const game = (participantes) => { |
| 44 | + participantes = 100 |
| 45 | + return `El juego cuenta con: ${participantes} atletas` |
| 46 | +} |
| 47 | + |
| 48 | +let atletas = 200 |
| 49 | +console.log(game(atletas)) //Le juego cuenta con 100 atletas |
| 50 | +console.log(atletas) //200 |
| 51 | + |
| 52 | +/* Funciones con valores no primitivos */ |
| 53 | + |
| 54 | +/** |
| 55 | + * Lista de series de TV |
| 56 | + * @param {Array} arr Array lista de series de TV |
| 57 | + * @returns Retorna la lista de series televisivas |
| 58 | + */ |
| 59 | +const seriesTV = (arr) => { |
| 60 | + const arrCopy = [...arr] |
| 61 | + const results = [] |
| 62 | + for (let index = 0; index < arrCopy.length; index++) { |
| 63 | + results.push(arrCopy.shift()) |
| 64 | + } |
| 65 | + return results |
| 66 | +} |
| 67 | +const misSeries = ["X Files", "24 Hours", "La que se avecina", "Bleach", "Big Bang Theory"] |
| 68 | +seriesTV(misSeries) |
| 69 | +console.log(misSeries) // ["X Files", "24 Hours", "La que se avecina", "Bleach", "Big Bang Theory"] |
| 70 | + |
| 71 | +/* DIFICULTAD EXTRA */ |
| 72 | +/** |
| 73 | + * DIFICULTAD EXTRA (opcional): |
| 74 | +Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente. |
| 75 | +- Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia. |
| 76 | +Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas. |
| 77 | +Comprueba también que se ha conservado el valor original en las primeras. |
| 78 | +*/ |
| 79 | + |
| 80 | +// Función con dos parámetros por valor |
| 81 | +/** |
| 82 | + * Intercambia dos valores |
| 83 | + * @param {number} paramOne Any number |
| 84 | + * @param {number} paramTwo Any number |
| 85 | + * @returns Retorna un array con los valores intercambiados |
| 86 | + */ |
| 87 | +function programOne(paramOne, paramTwo) { |
| 88 | + let temp = paramOne |
| 89 | + paramOne = paramTwo |
| 90 | + paramTwo = temp |
| 91 | + return [paramOne, paramTwo] |
| 92 | +} |
| 93 | + |
| 94 | +let paramOne = 10 |
| 95 | +let paramTwo = 20 |
| 96 | + |
| 97 | +let switchOne |
| 98 | +let switchTwo |
| 99 | +;[switchOne, switchTwo] = programOne(paramOne, paramTwo) |
| 100 | + |
| 101 | +console.log(`Parámetros iniciales: Primer valor ${paramOne}, Segundo Valor ${paramTwo}`) |
| 102 | + |
| 103 | +console.log(`Parámetros intercambiados: Primer valor ${switchOne}, Segundo Valor ${switchTwo}`) |
| 104 | + |
| 105 | +// Función con dos parámetros por referencia |
| 106 | +function programTwo(arrOne, arrTwo) { |
| 107 | + const temp = arrOne |
| 108 | + arrOne = arrTwo |
| 109 | + arrTwo = temp |
| 110 | + return { arrOne, arrTwo } |
| 111 | +} |
| 112 | + |
| 113 | +const laptop = ["Apple", "Dell", "HP", "Lenovo", "Asus"] |
| 114 | +const phone = ["Samsung", "Apple", "Xiaomi", "OnePlus", "Huawei"] |
| 115 | + |
| 116 | +let { arrOne: firstArr, arrTwo: secondArr } = programTwo(laptop, phone) |
| 117 | +console.log(`Parámetros iniciales -> uno: ${laptop}, dos: ${phone}`) |
| 118 | +console.log(`Parámetros Intercambiados -> uno: ${firstArr}, dos: ${secondArr}`) |
0 commit comments