Ich bin auf ein unerwartetes Verhalten gestoßen, als ich einen großen Millisekundenwert an übergeben habe setTimeout(). Zum Beispiel,
setTimeout(some_callback, Number.MAX_VALUE);
und
setTimeout(some_callback, Infinity);
beide führen some_callbackdazu, dass sie fast sofort ausgeführt werden, als hätte ich 0anstelle einer großen Zahl die Verzögerung überschritten .
Warum passiert das?
delay >>> 0passiert so etwas wie , so dass die verstrichene Verzögerung Null ist. In jedem Fall erklärt die Tatsache, dass die Verzögerung als 32-Bit-Int ohne Vorzeichen gespeichert ist, dieses Verhalten. Vielen Dank!