Cómo aceptar un número ilimitado de parámetros en JavaScript

Javascript

En JavaScript puedes hacer que una función acepte un número ilimitado de parámetros. Además es algo que podrás hacer de varias formas. Vamos a ver primero una mala aproximación para así explicar el problema y seguidamente veremos cómo solucionarlo mediante el operador spread.

Parámetros opcionales

Vamos a partir de que tienes una función llamada sumar() cuyo objetivo es el de sumar varios valores:

const sumar = (elem1, elem2) => {
  return elem1 + elem2;
}

A la función anterior podemos pasarle dos parámetros, tal que así:

const resultado = sumar(2, 4);

En caso de que quisieras agregar más parámetros, haciendo que la función funcione con dos o más parámetros, podrías agregar parámetros opcionales con un valor predefinido:

const sumar = (elem1, elem2, elem3 = 0) => {
  return elem1 + elem2 + elem2;
}

Sin embargo, esta solución es impracticable si quisieras agregar infinitos parámetros, ya que tendrías que especificarlos uno a uno. Es decir, que no es una buena solución.

Usa el operador Spread

La solución pasa por usar el operador spread seguido del nombre de un único array que los contendrá a todos. El operador spread se representa mediante tres puntos .... En el interior de la función del ejemplo anterior podremos recorrer el array y sumar los elementos, obteniendo así el resultado:

const sumar = (...elems) => {
  let total = 0;
  for (const elem of elems) {
    total += elem;
  }
  return total;
}

También podrías declarar una función que, por ejemplo, una un número ilimitado de cadenas:

const unirCadenas = (...cadenas) => {
  return cadenas.join(' ');
}

Si quieres también puedes simplificar la función anterior usando una función flecha:

const unirCadenas = (...cadenas) => cadenas.join(' ');

Si no estás seguro de lo que hemos hecho, puedes consultar el tutorial en el que explicamos en detalle las diferencias entre las funciones normales y las funciones flecha.

Ahora vamos a llamar a la función anterior:

unirCadenas('Que tengas', 'un buen día');

Y esto ha sido todo.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”