Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Почему объекты в JavaScript нельзя сравнить по значению через ===?

Вопрос проверяет понимание того, как объекты хранятся в памяти и почему сравнение по значению для них не работает.

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

Объекты в JavaScript сравниваются по ссылке, а не по содержимому. Даже если два объекта имеют одинаковые поля и значения, они считаются разными, если созданы отдельно. Оператор === проверяет, указывают ли переменные на один и тот же объект в памяти. Поэтому сравнение по значению через === невозможно. Это фундаментальное свойство языка.

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

В JavaScript объекты — это ссылочные типы, и именно это определяет поведение сравнения.

Как хранятся объекты

Когда создаётся объект:

  • он размещается в памяти

  • переменная хранит ссылку на него

  • не само значение, а адрес

const a = { x: 1 }
const b = { x: 1 }

Хотя a и b выглядят одинаково, они:

  • созданы отдельно

  • имеют разные ссылки в памяти

Как работает === для объектов

Оператор ===:

  • сравнивает ссылки

  • не анализирует содержимое объекта

a === b // false

Но:

const c = a
a === c // true

Почему JavaScript так устроен

Причины:

  • сравнение ссылок выполняется быстро

  • глубокое сравнение может быть дорогим

  • язык избегает неявных затрат

Практические последствия

  • нельзя сравнивать объекты напрямую

  • изменения объекта видны всем ссылкам

  • важно учитывать это при работе со state

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

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

#object

#comparison

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