El operador rest en JavaScript
Comenzaremos esta lección con una aclaración.
En todas las lecciones anteriores de esta sección,
no te dije toda la verdad sobre el operador ...
En realidad, este operador, dependiendo de su ubicación en el código, puede llamarse operador spread u operador rest.
Como ya sabes, cuando el operador spread
se coloca antes de un array o una cadena, los divide
en valores individuales. El operador rest,
aunque tiene la misma sintaxis ...,
está diseñado para otro propósito.
Ahora vamos a averiguar para qué. Supongamos que tenemos una función que acepta dos parámetros:
function func(a, b) {
console.log(a);
console.log(b);
}
Ya debes saber que si se pasan parámetros adicionales a la función, esto no producirá un error:
func(1, 2, 3, 4, 5);
El operador rest permite obtener todos
los parámetros adicionales en forma de array. Para ello,
se añade un parámetro más a la función (obligatoriamente
el último), delante del cual se escriben 3 puntos:
function func(a, b, ...rest) {
}
Estos tres puntos son el operador rest, y el nombre
de la variable puede ser cualquiera, pero
normalmente también se suele llamar rest.
Llamemos a nuestra función con un exceso
de parámetros y veamos qué llega
a los parámetros a y b, y qué -
al resto rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // muestra 1
console.log(b); // muestra 2
console.log(rest); // muestra [3, 4, 5]
}
Si no hay parámetros adicionales, en la variable
rest se guardará un array vacío:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // muestra 1
console.log(b); // muestra 2
console.log(rest); // muestra []
}
La función puede no tener parámetros en absoluto,
pero aún así se puede añadir rest.
En este caso, la función se puede llamar
con cualquier número de parámetros y todos ellos
se guardarán en el array rest:
function func(...rest) {
console.log(rest);
}