7 типів JavaScript
Зрозумій яка буває інформація в JS і як її розрізняти
Типи — це різні полиці в шафі
Уяви шафу з підписаними полицями: на одній — числа, на іншій — текст, на третій — лампочки вкл/викл. JavaScript теж поділяє інформацію на категорії — типи. Знаючи тип, комп'ютер розуміє що з ним можна робити: числа можна складати, текст — з'єднувати, boolean — перевіряти.
7 типів JavaScript
В JavaScript є 7 типів — 6 примітивних і 1 складний:
| Тип | Приклад | Коли використовують |
|---|---|---|
string | "Привіт", 'JS' | Текст, імена, повідомлення |
number | 42, 3.14, -7 | Числа, ціни, координати |
boolean | true, false | Так/Ні, вкл/викл, умови |
undefined | undefined | Змінна оголошена, але не має значення |
null | null | Навмисно порожнє значення |
symbol | Symbol('id') | Унікальні ключі (просунутий рівень) |
bigint | 9007199254740993n | Дуже великі числа |
object | {}, [], null | Складні структури (наступний урок!) |
Перші 6 — примітиви (прості значення). object — складний тип.
Оператор typeof
typeof повертає назву типу як рядок:
typeof "Привіт" // "string"
typeof 42 // "number"
typeof 3.14 // "number" — дробові теж number!
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object" ← ПАС ТКА! (пояснимо в наступному уроці)
typeof {} // "object"
typeof [] // "object" ← масиви теж object!
typeof function(){} // "function"Важливо: typeof повертає рядок у лапках — тобто "number", "string", а не просто number.
Рядки (string) — детальніше
let name = "Марія"; // подвійні лапки
let city = 'Харків'; // одинарні (однаково)
let greeting = `Привіт, ${name}!`; // шаблонний рядок — вставляє змінну
console.log(greeting); // Привіт, Марія!
// Довжина рядка
console.log(name.length); // 5
// Конкатенація (з'єднання)
let full = "Іван" + " " + "Коваль"; // "Іван Коваль"Шаблонні рядки (backtick `) — найзручніший спосіб вставити змінну в текст.
Числа — NaN і Infinity
console.log(10 / 0); // Infinity (не помилка!)
console.log(-10 / 0); // -Infinity
console.log("привіт" * 2); // NaN — Not a Number
// NaN — це число типу, але "не число" за значенням
console.log(typeof NaN); // "number" ← так, NaN це number!
// Перетворення рядка в число
console.log(parseInt("42px")); // 42 — бере число з початку
console.log(parseFloat("3.14")); // 3.14
console.log(Number("42")); // 42
console.log(Number("привіт")); // NaNПеревірка NaN: isNaN(value) або Number.isNaN(value). Не можна порівняти value === NaN — завжди false!
Boolean — правдиві і хибні значення (Truthy/Falsy)
В JavaScript кожне значення автоматично є або "правдивим" (truthy) або "хибним" (falsy) при перевірці в умові:
Хибні (falsy) — рівно 7 значень:
false
0
-0
0n // BigInt нуль
"" // порожній рядок
null
undefined
NaNПравдиві (truthy) — ВСЕ решта, включно з:
true
1
-1
"0" // рядок '0' — правдивий!
"false" // рядок 'false' — правдивий!
[] // порожній масив — правдивий!
{} // порожній об'єкт — правдивий!Це важливо для if-умов: if (value) — перевіряє чи значення truthy.
Пастка з порожнім масивом — дуже поширена помилка. [] truthy, але 'порожній'. Перевіряй .length!
null проти undefined
Обидва означають «нічого немає», але з різними намірами:
let a; // undefined — не задане значення
console.log(a); // undefined
let b = null; // null — навмисно ПОРОЖНЬО
console.log(b); // null
console.log(typeof a); // "undefined"
console.log(typeof b); // "object" ← сюрприз!Правило:
undefined— змінна є, але значення не присвоєне (JS сам ставить)null— ти сам навмисно кажеш «тут нічого немає»
Наприклад: let user = null; — користувач ще не завантажений.
Запам'ятай: typeof повертає РЯДОК. Тому перевіряй так: typeof x === "number" (з лапками). А typeof null === "object" — це баг JS від 1995 року, ніколи не виправлений щоб не зламати старий код.