JavaScript имеет 8 фундаментальных типов данных, разделённых на две категории: примитивные и не-примитивные.
Примитивы — это неизменяемые значения, которые хранятся непосредственно в памяти:
String — текстовые данные (например, "hello")Number — целые числа и числа с плавающей точкой (например, 42, 3.14)Boolean — логические значения: true или falsenull — намеренное отсутствие значенияundefined — переменная объявлена, но значение ещё не присвоеноSymbol — уникальные, неизменяемые идентификаторы (введены в ES6)BigInt — целые числа произвольного размера (введены в ES2020)Object — ссылочный тип, который хранит коллекции данных или сложные сущностиВсё, что не является примитивом, — это Object. Сюда входят:
Критическое различие — в том, как значения хранятся и копируются:
// Примитив: копируется по ЗНАЧЕНИЮ
let a = 10;
let b = a;
b = 20;
console.log(a); // 10 — не изменилось
// Object: копируется по ССЫЛКЕ
let obj1 = { x: 10 };
let obj2 = obj1;
obj2.x = 20;
console.log(obj1.x); // 20 — изменилось
Примитивы копируются по значению — каждая переменная содержит собственную независимую копию. Объекты копируются по ссылке — несколько переменных могут указывать на одни и те же данные.
BigInt и Symbol — это оба примитивных типа в JavaScript, но Symbol был введён в ES6, а BigInt добавили позже в ES2020.
Новый — ещё не проверен сообществом
Вы