informatica:programacion:cursos:programacion_avanzada_javascript:desestructuracion
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| informatica:programacion:cursos:programacion_avanzada_javascript:desestructuracion [2024/10/17 11:40] – [DEMO: Desestructuración en parámetros] tempwin | informatica:programacion:cursos:programacion_avanzada_javascript:desestructuracion [2024/10/17 12:42] (actual) – [DEMO: Parámetros rest] tempwin | ||
|---|---|---|---|
| Línea 338: | Línea 338: | ||
| Esto permite tener parámetros nombrados dentro de un objeto y ayudar a la legibilidad del código. | Esto permite tener parámetros nombrados dentro de un objeto y ayudar a la legibilidad del código. | ||
| ===== Operador spread ===== | ===== Operador spread ===== | ||
| + | |||
| + | El operador **spread** permite que en situaciones en las que se espera un valor, aparezcan varios valores. Es un operador muy potente, y la mejor manera de entenderlo es verlo en acción. | ||
| + | |||
| + | Empecemos viéndolo en combinación con la desestructuración: | ||
| + | |||
| + | <code javascript> | ||
| + | var [a,b,...c] = [10, 20, 30, 40, 50]; | ||
| + | </ | ||
| + | |||
| + | El operador **spread** son los tres puntos ('' | ||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | Cuando el operador **spread** se usa de ese modo, tan solo puede aparecer una vez y en el último lugar. | ||
| + | </ | ||
| + | |||
| + | Otro uso interesante del operador es llamar a funciones con N parámetros a partir de un array con N valores: | ||
| + | |||
| + | <code javascript> | ||
| + | var foo = function(a, | ||
| + | console.log(a, | ||
| + | } | ||
| + | foo(...[10, | ||
| + | </ | ||
| + | |||
| + | Observa cómo llamamos a la función '' | ||
| + | |||
| + | Se pueden combinar varios operadores spread llamando a una función, y eso se puede combinar con parámetros normales. La flexibilidad es total: | ||
| + | |||
| + | <code javascript> | ||
| + | var foo = function(a, | ||
| + | } | ||
| + | foo(10, ...[20, 30], 40, ...[50]); | ||
| + | </ | ||
| + | |||
| + | En este código... | ||
| + | |||
| + | * El valor del parámetro '' | ||
| + | * El valor del parámetro '' | ||
| + | * El valor del parámetro '' | ||
| + | * El valor del parámetro '' | ||
| + | * El valor del parámetro '' | ||
| + | |||
| + | ==== Parámetros rest ==== | ||
| + | |||
| + | El operador //spread// se puede aplicar al último parámetro de una función. Cuando hacemos esto decimos que este parámetro es un " | ||
| + | |||
| + | <code javascript> | ||
| + | var foo = function(a, | ||
| + | foo(10, 20, 30); // c vale [30] | ||
| + | foo(10, 20, 30, 40); // c vale [30, 40] | ||
| + | foo(10, | ||
| + | </ | ||
| + | |||
| + | Quizá te preguntes qué aportan los parámetros //rest//, existiendo '' | ||
| ===== DEMO: Operador spread ===== | ===== DEMO: Operador spread ===== | ||
| + | |||
| + | Desestructuración normal: | ||
| + | |||
| + | <code javascript> | ||
| + | var arr = [1, | ||
| + | |||
| + | var [x,,,y] = arr; | ||
| + | |||
| + | console.log(x, | ||
| + | </ | ||
| + | |||
| + | Aplicando el operador //spread// ('' | ||
| + | |||
| + | <code javascript> | ||
| + | var arr = [1, | ||
| + | |||
| + | var [x,,, | ||
| + | |||
| + | console.log(x, | ||
| + | </ | ||
| + | |||
| + | El operador //spread// permite que varios valores se obtengan en un nuevo array. | ||
| + | |||
| + | Este operador también nos permite combinar fácilmente arrays: | ||
| + | |||
| + | <code javascript> | ||
| + | var uno = [1, 2, 5, 6]; | ||
| + | |||
| + | // Queremos que el segundo array tenga unos elementos y el anterior array: | ||
| + | var dos = [100, 200, ...uno, 300]; | ||
| + | |||
| + | dos;// Array [ 100, 200, 1, 2, 5, 6, 300 ] | ||
| + | </ | ||
| + | |||
| + | Otro de los usos de este operador es para las funciones sin necesidad de usar '' | ||
| + | |||
| + | <code javascript> | ||
| + | var foo = function(a, b, c, d, e) { | ||
| + | console.log(a, | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Uso: | ||
| + | <code javascript> | ||
| + | var arr = [1, | ||
| + | |||
| + | // Imaginemos que queremos asociar cada uno de esos valores del array | ||
| + | // a los distintos argumentos de la función ' | ||
| + | foo(...arr); | ||
| + | </ | ||
| + | |||
| + | Si tuviéramos menos elementos: | ||
| + | |||
| + | <code javascript> | ||
| + | var arr = [1, | ||
| + | |||
| + | // El resto de parámetros de la función se los podríamos | ||
| + | // pasar así: | ||
| + | foo(...arr, 100, 200); | ||
| + | </ | ||
| + | |||
| + | También es posible hacer esto: | ||
| + | |||
| + | <code javascript> | ||
| + | var arr = [1, | ||
| + | var arr2 = [200, 300]; | ||
| + | |||
| + | |||
| + | foo(...arr, ...arr2); | ||
| + | |||
| + | También podemos hacer: | ||
| + | |||
| + | foo(...arr, ...[10], ...[30]); | ||
| + | </ | ||
| + | |||
| ===== DEMO: Parámetros rest ===== | ===== DEMO: Parámetros rest ===== | ||
| + | |||
| + | Llamamos parámetros //rest// a que podemos aplicar el operador //spread// como último parámetro de una función y este último parámetro será un array que contendrá todos los parámetros no nombrados de la función. | ||
| + | |||
| + | <code javascript> | ||
| + | var foo = function(a, b, ...c) { | ||
| + | console.log(a); | ||
| + | console.log(b); | ||
| + | console.log(c); | ||
| + | } | ||
| + | |||
| + | foo(10, 20, 30); | ||
| + | // 10 | ||
| + | // 20 | ||
| + | // Array [ 30 ] | ||
| + | |||
| + | foo(10, 20, 30, 40, 50, 60); | ||
| + | // 10 | ||
| + | // 20 | ||
| + | // Array [ 30, 40, 50, 60 ] | ||
| + | </ | ||
| + | |||
| + | Los parámetros //rest// no fallan, por ejemplo, veamos qué pasa si le pasamos a la función todos los argumentos menos los //rest//: | ||
| + | |||
| + | <code javascript> | ||
| + | foo(10, 20); | ||
| + | |||
| + | // 10 | ||
| + | // 20 | ||
| + | // Array [ ] | ||
| + | </ | ||
| + | |||
| + | Vamos a ver diferencias con '' | ||
| + | |||
| + | <code javascript> | ||
| + | var foo = function(a, b, ...c) { | ||
| + | console.log(a); | ||
| + | console.log(b); | ||
| + | console.log(c); | ||
| + | console.log(arguments); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Usamos: | ||
| + | |||
| + | <code javascript> | ||
| + | foo(10, 20, 30, 40); | ||
| + | // 10 | ||
| + | // 20 | ||
| + | // Array [ 30, 40 ] | ||
| + | // Arguments { , 7 more... } | ||
| + | </ | ||
| + | |||
| + | '' | ||
informatica/programacion/cursos/programacion_avanzada_javascript/desestructuracion.1729158004.txt.gz · Última modificación: por tempwin
