Реляционные операторы (>=и <=) выполняют операторное принуждение (ToPrimitive) с типом подсказки Number, все присутствующие реляционные операторы имеют такое поведение.
С другой стороны, оператор Equals (==), если операнд null, он возвращает true, если другой - либо null, либо undefined, никакого принуждения числового типа не производится.
Операторы относительного сравнения подразумевают числовой контекст, поэтому в этих случаях (>, >=) null преобразуется в число (ноль).
Однако в случае == оба значения рассматриваются как логические значения, а Javascript не считает, что null должен быть равен любым другим значениям "ложности". Это странно. Алгоритм равенства для == имеет кучу особых случаев, а null - один из них. Это только == для себя и undefined.
Ответ 3
Когда значение null используется в числовом эксперименте, оно вычисляется до 0, что объясняет ваши > и >= случаи.
== более тонкий. Неофициально null - это не то же самое, что и ноль, поэтому это имеет смысл.
Ответ 4
Интересно! Кажется, Javascript нуждается в нескольких новых операциях идентификации, таких как >== и <==. Хотя я не уверен, что это имело бы большой смысл, учитывая числовые значения > и <.