Dada la siguiente función:
let ticks = 0; let clock = setInterval(() => { console.log("tick", ticks++); if (ticks == 10) { clearInterval(clock); console.log("stop."); } }, 200);¿Por qué lo primero que se registra en la consola es "tick 0" en lugar de "tick 1", ya que está incrementando inmediatamente los ticks en 1 (ticks++)? O, ¿es el caso de que JS ve "ticks" primero e inmediatamente lo registra, luego ve el ++ y lo incrementa en consecuencia?
ticks++ se evalúa como ticks y, después de eso, agrega 1. Probablemente quieras ++ticks .
Te salta justo al comienzo de la documentación del operador ++ :
Si se usa postfijo, con operador después del operando (por ejemplo,
x++), el operador de incremento incrementa y devuelve el valor antes de incrementar.
Si se usa como prefijo, con el operador antes del operando (por ejemplo,++x), el operador de incremento incrementa y devuelve el valor después del incremento.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Increment#description