Я думаю, что >> как-то интерпретируется как (>)> 0 вместо сдвига вправо.
Нет, если бы он так размечал его, он увидел бы синтаксическую ошибку, и вы бы ничего не получили вообще. (И десятки других вещей сломаются; токенизатор имеет , чтобы быть жадным к операторам.)
Скорее всего, это ошибочная оптимизация (теперь, по-видимому, исправленная), рассматривающая >> 0
как неработающую. Мне пришлось дважды проверить спецификацию (Раздел 11.7.2 [" Оператор сдвига вправо со знаком (>>) "], стр. 76 5-го издания), чтобы напомнить себе, почему это выходило 0
, в отличие от прямого результата Math.random()
. Ключевой бит, разумеется,
Результатом является 32-разрядное целое число со знаком.
Поговорим о ваших крайних случаях ...