May 20, 2023

Что будет на выходе?

Ответ: false, false, false, true
Пояснение:

Сase 1. null > 0, null < 0

Операторы сравнения > и < после приведения непримитивных операндов к примитиву, применяют метод toNumber на обеих частях выражения (исключение: оба операнда типа string). 
Так, null преобразуется к +0, а 0 остается 0. 
+0 и 0 имеют одинаковые числовые значения, поэтому результат false. 

[про signed zeros в JS можно почитать тут (https://medium.com/coding-at-dawn/is-negative-zero-0-a-number-in-javascript-c62739f80114)]

***

Case 2. null == 0

В ECMA описан алгоритм сравнения для равенств (https://javascript.ru/ecma/part11#a-11.9.3). В зависимости от типа операндов, алгоритм ведет себя по разному. В нем описаны, например, такие кейсы:
- когда оба операнда одного типа
- когда один из операндов null, а другой undefined
- один string, другой number 
и некоторые другие. 
Но кейс, в котором один из операндов null, а другой number/string в алгоритме не прописан.
Не попав ни в одно из условий, алгоритм вернет false по дефолту.
***

Case 3. null >= 0

Алгоритм сравнения для >= и <= работает от обратного. (Если a НЕ меньше b, то оно точно больше или равно b.)
Т.к null < 0 возвращает значение false, то null >= 0 - это true. 
По этой логике null <= 0 тоже true.