> Null это и так "отсутствие значения"Ты правильно сделал, что взял в кавычки. Потому что подлинным отсутствием значения является, как подсказывает даже англо-русский словарь, undefined. Аналогия из доступного тебе мира:
1) Когда перед тобой белый лист бумаги -- это undefined. На этом листе теоретически может быть все, что угодно: рисунок, рассказ и т. д.
2) После того, как ты вывел на бумаге строчку "Номер и серия паспорта: ________" -- это null. То есть ссылка на другой документ (объект), который пока что никуда не указывает. Одновременно с этим уже исключается присутствие на листе рисунка или рассказа (в рамках данной аналогии), поэтому это уже не undefined.
3) Когда ты впишешь реальный номер и серию паспорта -- это уже будет заполненной ссылкой. Это теперь уже объект. (В JavaScript всегда работают со ссылками, а не с непосредственно объектами.)
Отличаешь ли ты первую ситуацию от второй?
> нам надо выяснить а "находятся ли переменные в одинаковом состоянии?"
Ну так "одинаковое состояние" -- слишком размытое понятие, чтобы уложиться в простейший оператор сравнения. Будут ли обладать одинаковым состоянием строка "привет мир" и результат деления 0 на 0? Для кого-то да, а для кого-то и нет. Для кого-то еще одним требованием к "одинаковому состоянию" будет еще и то, чтобы обе переменные имели один и тот же тип: в нашем случае:
typeof "привет мир"; // => 'string'
typeof (0 / 0); // => 'number'
isNaN("привет мир"); // => true -- потому что "привет мир" действительно не является числом :)
Number.isNaN("привет мир"); // => false -- потому что "привет мир" не имеет типа 'number'
И как ты уместишь это в простейший оператор сравнения?