В чем разница между значением и идентичностью

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

Ответ

В JavaScript различают значение (value) и идентичность (identity).

  • Значение — это данные, которые хранит переменная (число, строка, булево значение и т. д.).
  • Идентичность — это ссылка на объект в памяти.

Примитивы (строки, числа, булевы) сравниваются по значению:

5 === 5 // true  
'hello' === 'hello' // true  

Объекты (включая массивы и функции) сравниваются по идентичности (ссылки):

{} === {} // false (разные объекты в памяти)  
const arr = [1, 2];  
const arrCopy = arr;  
arr === arrCopy // true (одна и та же ссылка)  

Для глубокого сравнения объектов используют JSON.stringify() или библиотеки вроде Lodash (_.isEqual()).