Je suis tombé sur un comportement inattendu en passant une valeur importante en millisecondes à setTimeout(). Par exemple,
setTimeout(some_callback, Number.MAX_VALUE);
et
setTimeout(some_callback, Infinity);
les deux causent some_callbackd'être exécutés presque immédiatement, comme si j'avais passé 0au lieu d'un grand nombre comme retard.
Pourquoi cela arrive-t-il?
delay >>> 0se produit, donc le délai passé est nul. Dans tous les cas, le fait que le délai soit stocké sous la forme d'un int non signé 32 bits explique ce comportement. Merci!