В чем разница между объектами и другими типами данных в JavaScript

«В чем разница между объектами и другими типами данных в JavaScript» — вопрос из категории JavaScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Объекты в JavaScript — это ссылочный тип данных, в отличие от примитивов (number, string, boolean и т.д.), которые хранятся по значению.

Ключевые отличия:

  1. Передача по ссылке
    При копировании объекта копируется ссылка, а не сам объект. Изменения в копии влияют на оригинал.
    const obj1 = { a: 1 };
    const obj2 = obj1;
    obj2.a = 2;
    console.log(obj1.a); // 2
  1. Сравнение
    Объекты сравниваются по ссылке, а не по содержимому:
    const objA = { a: 1 };
    const objB = { a: 1 };
    console.log(objA === objB); // false
  1. Динамические свойства
    Объекты могут изменяться (добавлять/удалять свойства), в отличие от примитивов.

Примитивы же неизменяемы и сравниваются по значению.