Как ответить
В JavaScript все данные делятся на примитивные и ссылочные типы. Примитивы — это числа, строки, булевы значения, null, undefined, символы и BigInt. Они хранятся и сравниваются по значению. Ссылочные типы — это объекты, массивы, функции — они хранятся по ссылке, и при сравнении проверяется, указывают ли переменные на один и тот же объект в памяти.
Примитивные типы:
- Number — 64-битные числа с плавающей точкой (IEEE 754). Включает Infinity, -Infinity, NaN. Пример:
let age = 25; - String — последовательность символов в UTF-16. Можно задавать в одинарных, двойных кавычках или обратных (шаблонные строки).
let name = 'Alex'; - Boolean — true/false.
let isActive = true; - Null — специальное значение «ничего», объект по ошибке typeof.
let data = null; - Undefined — значение не присвоено.
let x;// undefined - Symbol — уникальный идентификатор, создаётся вызовом
Symbol(). Используется для приватных свойств объектов. - BigInt — для целых чисел произвольной длины. Добавлен в ES2020.
let big = 123n;
Ссылочные типы:
- Object — коллекция пар ключ-значение.
let user = { name: 'Alice', age: 30 }; - Array — упорядоченный список элементов.
let list = [1, 2, 3]; - Function — вызываемый объект.
function greet() { return 'Hi'; }
Важно: typeof null возвращает 'object' — это историческая ошибка, признанная багом. Также примитивы, кроме null и undefined, имеют объектные обёртки (Number, String, Boolean), которые позволяют вызывать методы, но после операции обёртка удаляется.
При сравнении примитивов используется строгое равенство (===) — оно сравнивает и тип, и значение. Для ссылочных типов === сравнивает ссылки: {} === {} вернёт false, потому что это разные объекты.