Hiprup

What is the arguments object vs rest parameters?

Two ways to access multiple function arguments.

  • arguments — an array-like object in regular functions; holds all arguments but lacks array methods.

  • Rest parameters (...args) — a real array, works in arrow functions, and captures only the parameters you specify.

Prefer rest parameters — clearer, more flexible, and they give you genuine array methods.

// arguments (legacy)
function sum() {
  console.log(arguments);        // { 0: 1, 1: 2, 2: 3, length: 3 }
  return Array.from(arguments).reduce((a, b) => a + b, 0);
}
sum(1, 2, 3); // 6

// Rest parameters (modern)
function sumModern(...numbers) { // Real array!
  return numbers.reduce((a, b) => a + b, 0);
}
sumModern(1, 2, 3); // 6

// Rest collects remaining args
function log(level, ...messages) {
  console.log(`[${level}]`, ...messages);
}
log('INFO', 'User', 'logged in'); // [INFO] User logged in

// Arrow functions — no arguments
const arrow = (...args) => args.reduce((a, b) => a + b, 0);
// const broken = () => arguments; // ReferenceError in arrow!

arguments is array-like (needs Array.from to use array methods). Rest parameters are a real array. Rest can collect 'remaining' arguments after named ones (level, ...messages).

Arrow functions have no arguments — must use rest parameters. Rest is clearer and more flexible.

arguments is legacy (array-like, no arrow functions). Rest parameters are modern (real array, works everywhere).

Key advantage: rest collects 'the rest' after named params. Always use rest in modern code.

What is the arguments object vs rest parameters? | Hiprup