Podczas przekazywania dużej wartości w milisekundach do setTimeout(). Na przykład,
setTimeout(some_callback, Number.MAX_VALUE);
i
setTimeout(some_callback, Infinity);
oba powodują, some_callbackże są uruchamiane niemal natychmiast, jakbym przeszedł 0zamiast dużej liczby jako opóźnienie.
Dlaczego to się dzieje?
delay >>> 0dzieje się coś podobnego , więc przekazane opóźnienie wynosi zero. Tak czy inaczej, fakt, że opóźnienie jest przechowywane jako 32-bitowa liczba int bez znaku, wyjaśnia to zachowanie. Dzięki!