Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: object, reference, comparison, equality, JavaScript

Почему два одинаковых объекта не равны по ссылке?

Проверяет понимание сравнения объектов по ссылке в JavaScript, а не по значению.

Короткий ответ

В JavaScript объекты сравниваются по ссылке, а не по содержимому. Два разных объекта, даже с одинаковыми свойствами, хранятся в разных участках памяти, поэтому операторы == и === вернут false. Для сравнения по значению нужно перебирать свойства или использовать JSON.stringify.

Длинный ответ

Почему два одинаковых объекта не равны по ссылке?

В JavaScript объекты являются ссылочным типом данных. Когда вы создаете объект, переменная хранит не сам объект, а ссылку на область памяти, где он находится. При сравнении двух объектов операторы == и === сравнивают именно эти ссылки, а не содержимое объектов.

Пример

const obj1 = { name: 'Alice' };
const obj2 = { name: 'Alice' };
console.log(obj1 === obj2); // false

Хотя obj1 и obj2 выглядят одинаково, они указывают на разные участки памяти. Даже если объекты имеют идентичные свойства, они не равны по ссылке.

Как сравнивать объекты по значению?

Для сравнения содержимого объектов можно использовать несколько подходов:

  • Перебор свойств вручную и сравнение каждого значения.
  • Преобразование в строку с помощью JSON.stringify (но порядок свойств может влиять).
  • Использование библиотек, таких как Lodash с функцией isEqual.

Пример сравнения через JSON.stringify

const obj1 = { name: 'Alice', age: 30 };
const obj2 = { name: 'Alice', age: 30 };
console.log(JSON.stringify(obj1) === JSON.stringify(obj2)); // true

Этот метод прост, но не учитывает функции, undefined и специальные объекты (например, Date).

Вывод

Понимание ссылочного сравнения важно для избежания ошибок при проверке равенства объектов. Используйте глубокое сравнение, когда нужно проверить идентичность содержимого, а не ссылки.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#object

#reference

#comparison

#equality

#JavaScript

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию