CodeForge

JavaScript de Cero a Experto / Funciones

Rest parameters: argumentos flexibles

Teoría18 min20 XP

¿Y si no sabes cuántos argumentos recibirá tu función? Sumar 3 números, o 10, o los que sean. Los REST PARAMETERS (...) resuelven esto: recogen todos los argumentos que sobren en una sola lista, para que tu función se adapte a cualquier cantidad de datos. Es la pieza que faltaba para funciones verdaderamente flexibles.

La bolsa que recoge todo lo demás

...numeros recoge cualquier cantidad de argumentos en una LISTA (un array, el tema del próximo módulo). Ya puedes preguntarle cuántos hay (.length) y recorrerla con for...of (for (const n of lista) visita cada elemento). La misma función suma 3 valores, 2, o ninguno — se adapta.

Combinar fijos + rest

Puedes tener parámetros normales Y un rest, pero el rest va SIEMPRE al final (es "lo que sobre"):

El primer argumento va al parámetro fijo (etiqueta), y TODO lo demás cae en el rest (gastos). Por eso el rest debe ser el último parámetro: representa "todo lo que quede después de los fijos". (En código viejo verás un objeto arguments que hacía algo parecido; el rest es su reemplazo moderno y más claro.)

Escribes function juntar(separador, ...palabras). Llamas juntar('-', 'a', 'b', 'c'). ¿Qué recibe cada parámetro?

Mini-reto

En "Mi Bolsillo": escribe function promedioGastos(...gastos) que devuelva el promedio (suma dividida entre la cantidad). Cuida el caso de CERO gastos (dividir entre 0 da problemas: si gastos.length === 0, devuelve 0). Pruébala con varios gastos y con ninguno. Una función que se adapta a cualquier cantidad de datos es una herramienta de verdad.

Qué sigue

Ya haces funciones flexibles. Pero, ¿dónde "viven" las variables que creas dentro de una función? ¿Puede el resto del programa verlas? La próxima lección abre el SCOPE (alcance): las reglas de qué código puede ver qué variables. Entenderlo evita una familia entera de bugs confusos.