Почему 1 === 1 верно, а {} === {} ложно
Когда вы погружаетесь в JavaScript, одно из первых, что вы заметите, — это его оператор строгого равенства ( ===
). На первый взгляд, это кажется простым, но в некоторых случаях вы можете почесать голову.
Давайте рассмотрим, почему 1 === 1
вычисляется как , true
тогда как {} === {}
вычисляется как false
.
Игра: примитивы против объектов
Чтобы понять это поведение, вам необходимо знать, как JavaScript обрабатывает примитивы и объекты в памяти.
Примитивы
Примитивы включают такие значения, как числа, строки, логические значения, undefined
, null
и символы. Когда вы сравниваете два примитивных значения с помощью ===
, JavaScript проверяет, являются ли их значения одинаковыми. Поскольку оба 1
ссылаются 1 === 1
на одно и то же значение, сравнение возвращает true
.
Объекты
Объекты, с другой стороны, более сложны. Они хранятся в специальной области памяти…
Читать далее: https://dev.to/lawaniej/why-1−1-is-true-but-is-false-5f9d
Ответ:
См. ещё
Ключевой вывод заключается в том, что 1 === 1
вычисляется в, true
потому что примитивы сравниваются по значению, а {} === {}
вычисляется в, false
потому что объекты сравниваются по ссылке.
Xм, null и массивы — это объекты. 😄