Problem
function factorial(n) {
  if (n === 0 || n === 1) return 1;

  for (const i = n - 1; i >= 1; i--) {
    n *= i;
  }

  return n;
}
Solution

For loops work by assigning a value to the variable for each iteration, but variables defined with const can’t be reassigned. Instead, we should use let to define our variable.

function factorial(n) {
  if (n === 0 || n === 1) return 1;

  for (let i = n - 1; i >= 1; i--) {
    n *= i;
  }

  return n;
}