Почему JavaScript побитовый ИЛИ ведет себя странно?

В JavaScript это выглядит так:

(4294958077 | 0) == -9219

Почему это не 4294958077?

Это говорит о том, что происходит какое-то переполнение (хотя, насколько я понимаю, диапазон типа номера JavaScript равен +/- 9007199254740992, так что это странно само по себе).

Даже если это было переполнение, конечно

(4294958077 | 0) == 4294958077

следует оценивать как истинное - но это не так.

Помогите, пожалуйста

Ответы на вопрос(3)

Ваш ответ на вопрос