Как работает оператор декремента в JS?
Потому что вы видимо плохо представляете как устроен цикл for. Он будет отрабатывать пока --n === true. В случае --n, там сразу окажется 0, т.е. false и цикл остановится, таким образом нуля вы не увидите никогда. В случае с n--, там будет пока ещё единица и цикл продолжится, а на момент вызова лога n уже станет нулём.// последняя итерация цикла

for (n = 10; --n;) { // n === 0
  console.log(n); // сюда не зайдёт ибо 0 == false
}

for (n = 10; n--;) { // n === 1
  console.log(n); // а вот тут уже n === 0
}
просто вы не пользовались логикой при составлении цикла :)