Problem
function sumArgs() {
  let sum = 0;

  arguments.forEach((arg) => {
    sum += arg;
  });

  return sum;
}

const result = sumArgs(1, 2, 3, 4, 5);
Solution

In JavaScript, arguments is not an array, it is an “array-like object” 😅. Because it’s an iterable, you can use a for loop to iterate over it, but if you want to use array methods like forEach, you need to convert it to an array first. There are a few different ways to do this.

function sumArgs() {
  let sum = 0;

  for (let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }

  return sum;
}

const result = sumArgs(1, 2, 3, 4, 5);

Or you can use the rest operator to get the arguments as an array:

function sumArgs(...args) {
  let sum = 0;

  args.forEach((arg) => {
    sum += arg;
  });

  return sum;
}

const result = sumArgs(1, 2, 3, 4, 5);

Or you can use Array.from to convert the arguments to an array:

function sumArgs() {
  let sum = 0;

  Array.from(arguments).forEach((arg) => {
    sum += arg;
  });

  return sum;
}

const result = sumArgs(1, 2, 3, 4, 5);