Parametros REST y Operador de Propagación en JavaScript

Los parámetros rest son una forma de utilizar parámetros virtualmente infinitos

Diseño web
3 minutos
Hace 6 años
Parametros REST y Operador de Propagación en JavaScript

¡Accede a cientos de cursos
con solo un pago al año!

Blog Microbanner

Los parámetros rest son una forma de utilizar parámetros virtualmente infinitos, se definen agregando ... adelante del nombre del parámetro rest, éste tiene que ser siempre el último parámetro de la función.

1function sumar(a, b, ...c) { 2 let resultado = a + b; 3 4 c.forEach(n => { 5 resultado += n; 6 }); 7 8 return console.log(resultado); 9} 10 11sumar(1,2); //Imprime 3 12sumar(1,2,3); //Imprime 6 13sumar(1,2,3,4); //Imprime 10 14sumar(1,2,3,4,5); //Imprime 15

Los tres puntos delante del tercer argumento c, indican que dicho valor en la función debe ser un arreglo compuesto por los parámetros que lleguen desde el tercero en adelante siguiendo esta lógica:

  • El primer valor se asigna al parámetro a.
  • El segundo valor se asigna al parámetro b.
  • El resto de parámetros, se guardará dentro de un arreglo asignado a c.

Spread Operator

Mientras que los parámetros Rest nos permiten tener un número indeterminado de argumentos en una función, el operador de propagación permite usar el mismo concepto a la inversa.

Que una expresión sea expandida en situaciones donde se esperan múltiples elementos, es decir, convertir un arreglo en una serie de argumentos para una función.

1let saludo = [ 'Hola', 'soy', 'su', 'amigo', 'y', 'docente', 'digital', 'Jonathan', 'MirCha' ] 2 3console.log( ...saludo ) //Hola soy su amigo y docente digital Jonathan MirCha

En este ejemplo, tomo el arreglo para procesar cada una de sus posiciones como argumentos de la función console.log, por lo que sería equivalente a escribir:

1console.log( saludo[0], saludo[1], saludo[2], saludo[3], saludo[4], saludo[5], saludo[6], saludo[7], saludo[8] )

Como ves el operador de propagación nos ofrece la ventaja de no conocer el número de elementos que tenga un arreglo, ni de crear ciclos que lo recorran y nos evita estar pasando cada uno de los elementos del mismo.

Esta funcionalidad puede servir incluso para concatenar arreglos entre sí, mira los siguientes ejemplos:

1let arr1 = [1, 2, 3, 4], 2 arr2 = [5, 6, 7, 8]; 3 4console.log(arr1); //Imprime [1, 2, 3, 4] 5console.log(...arr1); //Imprime 1 2 3 4 6 7arr1.push(...arr2); 8console.log(arr1); //Imprime [1, 2, 3, 4, 5, 6, 7, 8] 9 10let superiores = ['hombros', 'brazos', 'tronco'], 11 inferiores = ['pelvis', 'piernas', 'rodillas'], 12 cuerpo = ['cabeza', ...superiores, ...inferiores, 'pies']; 13 14console.log(cuerpo); //Imprime ["cabeza", "hombros", "brazos", "tronco", "pelvis", "piernas", "rodillas", "pies"] 15 16console.log(...cuerpo); //Imprime cabeza hombros brazos tronco pelvis piernas rodillas pies

En el primer ejemplo hemos incrementado el número de elementos de arr1 con los valores de arr2 y en el segundo ejemplo hemos formado y numerado todas las partes del cuerpo en una sola variable que contiene los elementos de 2 cadenas sencillas y dos arreglos más.

Como ves, gracias a los avances que el estándar de JavaScript ha tenido desde el 2015, ahora podemos tener una sintaxis con más posibilidades como en otros lenguajes de programación.

Recuerda que en EDteam tenemos varios cursos que te introducen y especializan en este maravilloso lenguaje:

En el siguiente capítulo te hablaré de la implementación de clases en la programación orientada a objetos en JavaScript.

Artículos anteriores de la serie 'El estándar actual de JavaScript':

  1. ECMAScript el estándar de JavaScript
  2. Babel
  3. Variables,Constantes y Niveles de Bloque
  4. Template Strings
  5. Arrow Functions
  6. Objetos Literales
  7. Destructuración

Se despide su amigo y docente digital Jonathan MirCha, sean felices, hasta siempre, nos leemos la próxima semana. Bye

Comentarios de los usuarios