Результат false: два вызова new Date создают разные объекты, а == между объектами сравнивает их идентичность, не временные значения.
Как сравнение двух объектов Date отображается в console.log
Результат false: два вызова new Date создают разные объекты, а == между объектами сравнивает их идентичность, не временные значения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой результат будет напечатан в консоль при выполнении следующего кода:
console.log(new Date(2000,1,1) == new Date(2000,1,1))
Ответ
Результат false: два вызова new Date создают разные объекты, а == между объектами сравнивает их идентичность, не временные значения.
Обе даты представляют один момент при одинаковом окружении, но ссылки различны. Для сравнения времени используйте first.getTime() === second.getTime() или +first === +second. В конструкторе Date месяцы нумеруются с нуля: аргумент 1 означает февраль, а не январь. Оператор == не преобразует оба объекта в числа просто потому, что они имеют одинаковый тип Date.