我对 JavaScript 阶乘的尝试有什么问题?

Whats wrong with my attempt at JavaScript factorial?

我试过做一个阶乘。下面的代码应该 return 24 (4x3x2x1) 但它实际上是 returns 12.

const fact = (no) => {
  let no2 = no;

  if (no > 1) {
    no--;
    no2 = no2 * no;
  }

  console.log(no2);
}

fact(4);

呸!我对 while

感到困惑
const fact = (no) => {
  let no2 = no;

  while (no > 1) {
    no--;
    no2 = no2 * no;
  }

  console.log(no2);
}

fact(4);

if 替换为 while

const fact = (no) => {
    let no2 = no;

    while (no > 1) {
        no--;
        no2 = no2 * no;
     }

    console.log(no2);
}


fact(4);