← Назад к вопросам

Какие знаешь примитивные типы данных?

1.0 Junior🔥 161 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Примитивные типы данных в JavaScript

В JavaScript есть 7 примитивных типов данных (primitive types). Это значения, которые хранятся напрямую, а не по ссылке. Давайте разберём каждый.

1. String — Строки текста

const name = 'Alice';
const greeting = "Hello, World!";
const template = `Hello, ${name}!`;

typeof name; // 'string'

Строки неизменяемы. При изменении создаётся новая строка.

2. Number — Числа

const integer = 42;
const decimal = 3.14;
const negative = -10;
const infinity = Infinity;
const notANumber = NaN; // Not a Number

typeof 42; // 'number'
typeof NaN; // 'number' (парадокс!)

Все числа хранятся как 64-битные числа с плавающей точкой (IEEE 754).

3. BigInt — Большие целые числа

const big = 1234567890123456789n;
const alsoLarge = BigInt('9007199254740991');

typeof big; // 'bigint'

// Обычный Number имеет лимит
Number.MAX_SAFE_INTEGER; // 9007199254740991
// BigInt может быть больше

Больше используется для криптографии и больших вычислений.

4. Boolean — Логические значения

const isActive = true;
const isCompleted = false;

typeof true; // 'boolean'

// Всё остальное преобразуется к boolean
Boolean(0); // false
Boolean(''); // false
Boolean(null); // false
Boolean(undefined); // false
Boolean(NaN); // false

Boolean(1); // true
Boolean('hello'); // true
Boolean([]); // true

5. Undefined — Неопределённое значение

let x;
console.log(x); // undefined

function test() {
  // нет return
}
test(); // undefined

typeof undefined; // 'undefined'

Обычно значит переменная объявлена, но значение не присвоено.

6. Null — Пустое значение

const empty = null;

typeof null; // 'object' (исторический баг!)

// null означает "намеренное отсутствие значения"
// в отличие от undefined

Это единственный примитивный тип, который имеет typeof 'object'. Это известный баг в JavaScript.

7. Symbol — Уникальный идентификатор

const id1 = Symbol('user');
const id2 = Symbol('user');

id1 === id2; // false — каждый Symbol уникален

typeof Symbol('id'); // 'symbol'

// Практическое использование
const privateData = Symbol('private');
const obj = {
  [privateData]: 'secret',
  public: 'visible'
};

obj[privateData]; // 'secret'
Object.keys(obj); // ['public'] — privateData скрыт

Примитивы vs Объекты

// Примитив — хранится значение
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 — obj1 изменилась

Упаковка примитивов (Boxing)

JavaScript автоматически преобразует примитивы в объекты:

const str = 'hello';
str.length; // 5 — JS создал временный объект String

const num = 42;
num.toFixed(2); // '42.00' — JS создал временный объект Number

const bool = true;
bool.toString(); // 'true' — JS создал временный объект Boolean

Таблица типов

ТипtypeofПримерОписание
String'string''hello'Текст
Number'number'42, 3.14, NaNЧисла
BigInt'bigint'42nБольшие числа
Boolean'boolean'true, falseЛогика
Undefined'undefined'undefinedНе определено
Null'object'nullПусто
Symbol'symbol'Symbol('id')Уникальный ID

Проверка типов

typeof 42; // 'number'
typeof 'hello'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'

// Для null нужна специальная проверка
value === null; // правильно
typeof null === 'object'; // true, но это баг

// instanceof для объектов
[] instanceof Array; // true
{} instanceof Object; // true

Практическое применение

// Функция принимает разные типы
function process(data) {
  if (typeof data === 'string') {
    return data.toUpperCase();
  } else if (typeof data === 'number') {
    return data * 2;
  } else if (typeof data === 'boolean') {
    return data ? 'yes' : 'no';
  }
  return 'unknown';
}

Итог

Примитивные типы — это основа JavaScript. Важно понимать различия между ними и как браузер с ними работает. На интервью часто спрашивают об упаковке примитивов и разнице между null и undefined.