JavaScript básico - Usa recursión para crear un rango de números

Buenos días, he pasado el challenge pero tengo una duda.
En mi solución intentaba llamar a la función recursivamente en la forma:

 let arrayNum = rangeOfNumbers(startNum++, endNum);

Y no funcionaba hasta que coloqué el +1, ¿esto se da porque el intérprete javascript no acepta el statement de incremento ++ en un argumento?
Muchas gracias por su respuesta.

Tu código hasta el momento

function rangeOfNumbers(startNum, endNum) {
  if (startNum > endNum) {
      return [];
  } else {
    let arrayNum = rangeOfNumbers(startNum+1, endNum);
    arrayNum.unshift(startNum);
    return arrayNum;
  }

};

Información de tu navegador:

El agente de usuario es: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.53

Desafío: JavaScript básico - Usa recursión para crear un rango de números

Enlaza al desafío:

Sí que “acepta” ++, pero no es válido, el problema está en lo que te explico a continuación:

startNum++
//Es igual a
startNum = startNum + 1
//Estamos reasignando la variable startNum en la llamada a la función
//y esto devuelve el mismo valor que ya tiene esa variable (1), por eso te da un loop infinito
//Puedes verificar lo que digo de esta manera:
let test = 1;
console.log("Asigna variable:",  test++);

//Valdrá 3 porque hemos asignado anteriormente a la variable el valor test + 1, test sera igual a 2
console.log("Devuelve el calculo:", test+1) //test +1 ==> 2 + 1 = 3

Aquí te dejo el ejemplo con un console.log, para que veas que el valor startNum siempre vale 1 o el valor inicial.
FreeCodeCamp detecta el loop y lo detiene, esto evidentemente provocaría un cuelgue en cualquier aplicación si no se tiene una regla que detecte esto para que detenga el proceso.

function rangeOfNumbers(startNum, endNum) {
  console.log(startNum);//Aqui tienes la prueba
  if (startNum > endNum) {
      return [];
  } else {
    let arrayNum = rangeOfNumbers(startNum++, endNum);//El caso del loop ya que startNum siempre devolverá el valor actual de la variable o argumento
    arrayNum.unshift(startNum);
    return arrayNum;
  }
};

console.log(rangeOfNumbers(1, 5));