Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
На какие группы делятся данные в JS?
В JavaScript все данные разделены на две основные группы: примитивные типы и объектные типы (ссылочные). Это фундаментальное разделение определяет, как данные хранятся в памяти и передаются между переменными.
Примитивные типы
Примитивные типы - это неизменяемые значения, которые хранятся непосредственно в памяти и передаются по значению. Существует 7 примитивных типов:
1. Number
Числовой тип для целых чисел и чисел с плавающей запятой:
const integer = 42;
const float = 3.14;
const negative = -100;
const infinity = Infinity;
const notANumber = NaN; // special number value
2. String
Строковые данные, неизменяемые последовательности символов:
const single = hello;
const double = "world";
const template = `Hello, ${name}`;
const empty = "";
3. Boolean
Логические значения true или false:
const isTrue = true;
const isFalse = false;
const result = 5 > 3; // true
4. Undefined
Тип переменной, которой не присвоено значение:
let x;
console.log(x); // undefined
function test() {} // return undefined if no explicit return
5. Null
Осознанное отсутствие значения:
const empty = null;
const user = null; // explicitly set to no value
6. Symbol
Уникальный идентификатор (введён в ES6):
const symbol1 = Symbol(id);
const symbol2 = Symbol(id);
console.log(symbol1 === symbol2); // false - каждый уникален
7. BigInt
Числа произвольной длины для работы с большими целыми числами:
const big = 12345678901234567890n;
const another = BigInt("999999999999999999");
// Нельзя смешивать с обычными числами без преобразования
Объектные типы (Ссылочные)
Объектные типы передаются по ссылке и хранятся в памяти как указатели. Главный тип - Object, но есть различные его разновидности:
1. Object (обычный объект)
Коллекция пар ключ-значение:
const user = {
name: "John",
age: 30,
email: "john@example.com"
};
const empty = {};
const dynamic = Object.create(null);
2. Array
Упорядоченная коллекция элементов:
const numbers = [1, 2, 3, 4, 5];
const mixed = [1, "text", true, null];
const nested = [[1, 2], [3, 4]];
3. Function
Функции - это объекты первого класса в JavaScript:
function greet(name) {
return `Hello, ${name}`;
}
const arrow = (x) => x * 2;
const anonymous = function() { return 42; };
4. Date
Объект для работы с датой и временем:
const now = new Date();
const specific = new Date(2024-01-15);
const timestamp = new Date().getTime();
5. RegExp
Объект для работы с регулярными выражениями:
const pattern = /hello/i;
const regex = new RegExp(world, g);
const matched = Hello World.match(pattern);
6. Error
Объекты ошибок для обработки исключений:
const error = new Error(Something went wrong);
const typeError = new TypeError(Invalid type);
throw error;
7. Map и Set
Современные структуры данных (ES6+):
const map = new Map();
map.set(key, value);
const set = new Set([1, 2, 3, 3]);
console.log(set.size); // 3 - дубликаты удалены
Ключевые различия
Самое важное различие между примитивами и объектами - это способ хранения в памяти:
// Примитивы - передача по значению
let a = 10;
let b = a; // копирование значения
b = 20;
console.log(a); // 10 - a не изменилось
// Объекты - передача по ссылке
let obj1 = { value: 10 };
let obj2 = obj1; // копирование ссылки на тот же объект
obj2.value = 20;
console.log(obj1.value); // 20 - объект изменился для обоих переменных
Понимание этой разницы критично для написания корректного кода и избегания ошибок при работе с данными в JavaScript.