Как понять особенность работы сравнения объектов JavaScript? Не совсем понятно сравнение объектов. Почему d == d1 выдает false - это понятно. Разные объекты, разные ссылки. Но вот в других случаях никак не могу понять. Подскажите, пожалуйста.
var d= new Date();
var d1= new Date(d.getTime());
console.log(d>= d1); // true
console.log(d> d1); // false
console.log(d== d1); // false

21 Авг 2019 в 07:06
164 +1
0
Ответы
1

В данном случае, когда вы сравниваете объекты Date, вы сравниваете их не по значению, а по ссылке. Это означает, что если у вас есть два различных объекта Date, созданные с использованием одних и тех же данных (например, с помощью d.getTime()), они все равно будут иметь разные ссылки.

В случае со строгим равенством (===) объекты Date всегда будут считаться разными, даже если у них одинаковые значения. Поэтому d === d1 всегда будет возвращать false.

Однако, при нестрогом сравнении (==) сначала происходит преобразование объектов Date в примитивные значения. В данном случае это приведет к сравнению числовых значений, возвращаемых методом getTime(). Так как у вас объекты Date созданы с использованием одинаковых данных, их числовые значения также будут одинаковыми. Поэтому d == d1 возвращает false.

Что касается операторов сравнения (>=, >), они также сначала преобразуют объекты Date в числовые значения и затем сравнивают их. В данном случае d имеет значение больше или равно d1, поэтому d >= d1 возвращает true, а d > d1 возвращает false.

Надеюсь, это поможет вам понять особенности работы сравнения объектов JavaScript.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 436 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир