---
title: Сравнение типов данных
seo:
  title: Сравнение типов данных — React Developer
  description: 'Тема «Сравнение типов данных» для собеседования React Developer. В чем разница между null и undefined? В чем разница между операторами "==" и "==="?'
---

[Все темы React Developer](/react-developer)

## <strong>В чем разница между</strong> <code>null</code> <strong>и</strong> <code>undefined</code><strong>?</strong> [#q-14bee738d69b81849682e847b5195a72]

Разница между <code>null</code> и <code>undefined</code> в JavaScript&#58;

{/* prettier-ignore */}
1. <code>undefined</code>&#58;

    - <strong>Значение</strong>&#58; Переменная объявлена, но не инициализирована.

    - <strong>Тип</strong>&#58; <code>undefined</code>.

    - <strong>Примеры использования</strong>&#58;

        ```javascript
        let a;
        console.log(a); // undefined
        ```

1. <code>null</code>&#58;

    - <strong>Значение</strong>&#58; Явное указание на отсутствие значения или "ничто".

    - null является единственным значением примитивного типа Null. typeof null возвращает строку "object" из-за исторической особенности JavaScript.

    - <strong>Примеры использования</strong>&#58;

        ```javascript
        let b = null;
        console.log(b); // null
        ```

#### Основные различия&#58;

- <strong>Назначение</strong>&#58; <code>undefined</code> означает, что
  переменная не инициализирована, а <code>null</code> указывает на намеренное
  отсутствие значения.

- null является единственным значением примитивного типа Null. typeof null возвращает строку "object" из-за исторической особенности JavaScript.

:::note[Ссылки для изучения]

1. [Особенности типов данных в JavaScript](https://habr.com/ru/articles/709048/)
   :::

---

## <strong>В чем разница между операторами</strong> <code>&#34;&#61;&#61;&#34;</code> <strong>и</strong> <code>&#34;&#61;&#61;&#61;&#34;</code><strong>?</strong> [#q-14bee738d69b81ce86a9fecdeec3febe]

Разница между <code>&#34;&#61;&#61;&#34;</code> и <code>&#34;&#61;&#61;&#61;&#34;</code> в JavaScript

{/* prettier-ignore */}
1. <strong>Оператор "==" (нестрогое равенство)</strong>&#58;

    - <strong>Сравнивает значения после приведения типов</strong>.

    - Пример&#58;

        ```javascript
        console.log(2 == '2'); // true (число и строка приводятся к одному типу)
        console.log(null == undefined); // true
        ```

1. <strong>Оператор "===" (строгое равенство)</strong>&#58;

    - <strong>Сравнивает значения без приведения типов</strong>.

    - Пример&#58;

        ```javascript
        console.log(2 === '2'); // false (разные типы: число и строка)
        console.log(null === undefined); // false
        ```

#### Основные различия&#58;

- <strong>Приведение типов</strong>&#58; "==" приводит операнды к одному типу
  перед сравнением, а "===" не приводит и сравнивает типы и значения напрямую.

- <strong>Использование</strong>&#58; "===" предпочтительнее использовать для
  точных сравнений, чтобы избежать непредвиденных результатов из-за приведения
  типов.

:::note[Ссылки для изучения]

1. [Особенности типов данных в JavaScript](https://habr.com/ru/articles/709048/)
   :::

---

## <strong>Почему результатом сравнения двух похожих объектов является</strong> <code>false</code><strong>?</strong> [#q-14bee738d69b81f18097fbfac0d7b871]

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

#### Пример&#58;

```javascript
let obj1 = { a: 1 };
let obj2 = { a: 1 };

console.log(obj1 === obj2); // false
console.log(obj1 == obj2); // false
```

#### Объяснение&#58;

{/* prettier-ignore */}
- <strong>Сравнение по ссылке</strong>&#58; <code>obj1</code> и <code>obj2</code> содержат одинаковые данные, но находятся в разных местах памяти. Сравнение этих объектов будет <code>false</code>, так как их ссылки разные.

- <strong>Сравнение примитивов</strong>&#58; Для примитивных типов (числа, строки, логические значения и т. д.) сравнение выполняется по значению, а не по ссылке.

:::note[Ссылки для изучения]

1. [Особенности типов данных в JavaScript](https://habr.com/ru/articles/709048/)
   :::
