Hay tres principales diferencias entre los parámetros rest y el objeto arguments:
Otra funcionalidad en JavaScript con la actualización ECMAScript 2015 (también llamada ES6) es la posibilidad de pasar una lista indefinida de valores y que los reciba un vector.
El concepto de parámetros Rest se logra antecediendo tres puntos al nombre del parámetro (el parámetro es un objeto de la clase Array con todas sus funcionalidades):
function sumar(...parametro)
Luego en la llamada podemos pasar una lista indeterminada de datos:
sumar(4, 55, 33);
<!DOCTYPE html> <html> <head> <title>Ejemplo de JavaScript</title> <meta charset="UTF-8"> </head> <body> <script> function sumar(...valores) { let suma=0; for(let x=0;x<valores.length;x++) suma+=valores[x]; return suma; } document.write(sumar(10, 2, 44, 3)); document.write('<br>'); document.write(sumar(1, 2)); document.write('<br>'); document.write(sumar()); document.write('<br>'); </script> </body> </html>
El parámetro valores es en realidad un vector y como tal podemos disponer un for para recorrerlo y acceder a sus elementos mediante un subíndice:
function sumar(...valores) { let suma=0; for(let x=0;x<valores.length;x++) suma+=valores[x]; return suma; }
Cuando llamamos a la función podemos pasar una cantidad variable de enteros para que sean sumados:
document.write(sumar(10, 2, 44, 3)); document.write(sumar(1, 2)); document.write(sumar());
La función con un parámetro Rest puede tener otros parámetros pero se deben declarar antes:
function operar(tipo, ...valores)
Los parámetros Rest no pueden tener un valor por defecto.