Коротка відповідь
juniorJavaScript має шість примітивних типів: string, number, bigint, boolean, symbol, null, а також один складений – object (включаючи array, function, date).
Повне пояснення
Що це і навіщо
- Примітивні типи представляють одиничні значення. Вони зберігаються за значенням.
- Object — контейнер для колекцій даних та функцій, зберігається за посиланням.
Ключові принципи/терміни
typeofповертає тип: "string", "number", "bigint", "boolean", "symbol", "undefined" або "object" (для null).instanceofперевіряє прототипну ланцюжок.
Як це працює
- При присвоєнні примітиву створюється копія значення. При присвоєнні об’єкта – посилання на той самий об’єкт.
Практика і реалізація
let a = 5; // number
let b = 'hello'; // string
let c = {x:1}; // object
Тестування (Jest)
test('type of null', () => {
expect(typeof null).toBe('object');
});
Особливості в контексті JS Core
NaN– особливе число, яке не дорівнює собі.Infinity,-Infinity– спеціальні значення числа.undefined– відсутність значення.
Оптимізація та edge cases
- Уникайте порівняння
==між різними типами; використовуйте строгі оператори===. - Для великих об’єктів розглядайте shallow vs deep копіювання (Object.assign, spread, lodash.cloneDeep).
Часті помилки
- Перевірка null через
typeof→ повертає "object". - Відсутність
===при порівнянні типів. - Необережне використання глобальних змінних.
- Зміна об’єкта в колекції, що призводить до непередбачуваних побічних ефектів.
- Відсутність перевірки
isNaNпри арифметичних операціях. - Використання
new Number(1)замість простого 1. - Застосування
deleteдо властивостей, що потрібні для роботи коду. - Необхідність обробки
Symbolу Map/Set без відповідних ключів.