Какие типы данных есть в JavaScript? Чем отличаются primitive и reference types?
1️⃣ Как кратко ответить
В JavaScript есть семь примитивных типов данных: undefined, null, boolean, number, string, bigint, symbol. Примитивные типы хранятся непосредственно в переменной. Ссылочные типы (объекты) включают объекты, массивы и функции. Они хранятся в памяти по ссылке, а переменная содержит указатель на их местоположение.
2️⃣ Подробное объяснение темы
JavaScript — это язык программирования, который поддерживает несколько типов данных. Эти типы данных делятся на две основные категории: примитивные (primitive types) и ссылочные (reference types).
Примитивные типы данных
Примитивные типы данных — это базовые типы, которые хранятся непосредственно в переменной. Они неизменяемы, то есть их значение не может быть изменено после создания. В JavaScript существует семь примитивных типов данных:
-
undefined: Тип данных, который имеет одно значениеundefined. Переменная, объявленная, но не инициализированная, имеет значениеundefined. -
null: Специальное значение, представляющее "отсутствие объекта". Это значение используется для обозначения намеренного отсутствия какого-либо объектного значения. -
boolean: Логический тип данных, который может принимать одно из двух значений:trueилиfalse. -
number: Числовой тип данных, который может представлять как целые числа, так и числа с плавающей запятой. -
string: Последовательность символов, используемая для представления текстовых данных. -
bigint: Тип данных для представления целых чисел произвольной длины. Используется, когда необходимо работать с числами, превышающими пределыnumber. -
symbol: Уникальный и неизменяемый тип данных, часто используемый для создания уникальных идентификаторов для свойств объектов.
Ссылочные типы данных
Ссылочные типы данных включают объекты, массивы и функции. Они хранятся в памяти по ссылке, а переменная содержит указатель на их местоположение. Это означает, что при присваивании или передаче ссылочного типа данных копируется не само значение, а ссылка на него.
Примеры ссылочных типов:
-
Объекты: Коллекции свойств, где каждое свойство имеет имя (ключ) и значение. Объекты могут содержать примитивные значения, другие объекты или функции.
-
Массивы: Специальный тип объектов, предназначенный для хранения упорядоченных коллекций данных.
-
Функции: Объекты, которые можно вызывать. Они могут быть присвоены переменным, переданы в качестве аргументов другим функциям и возвращены из функций.
Пример кода
// Примитивные типы
let a = 10; // number
let b = 'Hello'; // string
let c = true; // boolean
let d; // undefined
let e = null; // null
let f = Symbol('id'); // symbol
let g = 1234567890123456789012345678901234567890n; // bigint
// Ссылочные типы
let obj = { name: 'Alice', age: 25 }; // объект
let arr = [1, 2, 3, 4, 5]; // массив
let func = function() { return 'Hello, World!'; }; // функция
// Пример различия в поведении
let x = a; // копируется значение 10
x = 20; // изменение x не влияет на a
let objCopy = obj; // копируется ссылка на объект
objCopy.name = 'Bob'; // изменение objCopy влияет на obj
- Примитивные типы: Переменная
xполучает копию значенияa, поэтому изменениеxне влияет наa. - Ссылочные типы: Переменная
objCopyполучает ссылку наobj, поэтому изменениеobjCopyтакже изменяетobj.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться