Типи даних у JavaScript
Мова програмування JavaScript широко застосовується при розробці не тільки клієнтських, але й серверних програм. Однією з головних характеристик JavaScript є динамічна типізація, яка передбачає, що значення можуть змінювати свій тип під час виконання програми. У цій публікації ми розглянемо типи даних у JavaScript та їхні різновидності: примітивні та об’єктні.
У мові JavaScript є наступні типи даних:
Примітивні типи:
Об’єктні типи:
Примітивні значення — це базові типи даних, які не є об’єктами і які зберігаються як окремі значення, а не як посилання на об’єкти. Кожне примітивне значення є незмінним, тобто після його створення значення вже не можна змінити. У мові JavaScript існує 7 примітивних типів даних:
String — це тип даних для представлення текстових даних. Рядки можуть бути створені за допомогою одинарних (‘ ‘), подвійних (” “), або шаблонних лапок (` `). Рядки є незмінними, тобто будь-яка операція над рядком створює новий рядок.
const greeting = "Hello, world!"; const name = `JavaScript`; // Шаблонний рядок const message = `Hello, ${name}!`; // Інтерполяція змінних
Number використовується для представлення чисел (як цілих, так і дробових). JavaScript не має окремих типів для цілих чисел і чисел з плаваючою комою, тому всі числа представлені типом Number.
Спеціальні значення:
const age = 25; const price = 19.99; const negative = -5;
Це тип для представлення дуже великих цілих чисел, більших за Number.MAX_SAFE_INTEGER. BigInt створюється шляхом додавання n до числа:
const largeNumber = 12345678901234567890n;
Булевий тип (Boolean) може мати одне з двох значень: true або false. Як правило, його використовують для умовних перевірок.
const isJavaScriptFun = true; const isWinterCold = false;
Тип undefined присвоюється змінній, яка була оголошена, але не отримала жодного значення. Це означає, що змінна існує, але значення їй не призначено.
let user; console.log(user); // undefined
Null — це спеціальне значення, яке вказує на відсутність об’єкта або значення. null часто використовують для ініціалізації змінної, яка повинна містити об’єкт, але на даний момент порожня.
const emptyValue = null;
Symbol — це унікальний ідентифікатор, який завжди має унікальність навіть при однаковому значенні. Symbol часто використовують для створення неповторних ключів в об’єктах, які не можуть бути випадково перезаписані.
const id = Symbol("id");
Примітивні значення в JavaScript є основою для зберігання даних. Вони зберігаються безпосередньо в змінній та є незмінними, тобто не можуть бути змінені після створення. Також вони можуть створюватися та використовуватися без створення об’єктів.
Об’єкти в JavaScript є складними структурами, які мають властивості містити кілька значень. Вони можуть зберігати різні типи даних разом. До об’єктних типів відносяться також масиви, функції та спеціальні об’єктні типи, такі як Map і Set.
Основні об’єктні типи:
Об’єкти в JavaScript — це складні структури даних, які дозволяють зберігати колекції різних значень та організовувати дані за допомогою пар «ключ-значення». Об’єкти є фундаментальними поняттями для мови JavaScript — практично майже все в JavaScript може вважатись об’єктом, включно з масивами, функціями та багатьма базовими структурами.
Об’єкт у JavaScript можна створити за допомогою фігурних дужок {}, всередині яких вказуються пари ключ-значення, розділені комами. Ключі можуть бути рядками або значеннями Symbol. Значення можуть мати будь-який тип (у тому числі функції). Давайте подивимось це на прикладі коду:
const user = { name: "Alice", age: 30, isMember: true };
Доступ до властивостей об’єкта можна отримати через крапку (.). Такий запис використовується, якщо назва властивості відома і відповідає стандартним іменувальним правилам (без пробілів та спецсимволів).
console.log(user.name); // Alice
Також доступ можна отримати через квадратні дужки ([]): Цей метод дозволяє доступ до властивостей, які можуть мати динамічні імена або містити спецсимволи та пробіли.
const property = "age"; console.log(user[property]); // 30
Ви можете додати нову властивість до об’єкта. Треба лише присвоїти значення новому ключу.
user.email = "alice@example.com";
Щоб змінити вже існуючі властивості об’єкта, виконуються аналогічні дії.
user.age = 21;
Щоб видалити властивості об’єкта, треба застосувати оператор delete.
delete user.isMember;
Щоб перебрати всі властивості об’єкта, можна використовувати цикл for…in, або скористатися методами Object.keys(), Object.values(), Object.entries().
Приклад для for…in:
for (let key in user) { console.log(key, user[key]); }
Приклад для Object.keys(). Тут він повертає масив ключів об’єкта.
console.log(Object.keys(user)); // ['name', 'age', 'email']
Приклад для Object.values(), де він повертає масив значень об’єкта.
console.log(Object.values(user)); // ['Alice', 21, 'alice@example.com']
Приклад для Object.entries(), в якому повертаєся масив пар [ключ, значення].
console.log(Object.entries(user)); // [['name', 'Alice'], ['age', 21], ['email', 'alice@example.com']]
Об’єкти можуть містити в собі вкладені об’єкти. Це дозволяє створювати складні структури даних.
const user = { name: "Alice", address: { city: "New York", zip: "10001" } }; console.log(user.address.city); // New York
Ті функції в JavaScript, які є властивостями об’єкта, називають методами. Вони можуть виконувати певні операції на об’єкті.
const calculator = { sum(a, b) { return a + b; }, multiply(a, b) { return a * b; } }; console.log(calculator.sum(3, 4)); // 7 console.log(calculator.multiply(3, 4)); // 12
Ключове слово this у методі об’єкта посилається на сам об’єкт. Це дозволяє методам взаємодіяти з іншими властивостями об’єкта.
const person = { name: "Alice", greet() { console.log(`Hello, my name is ${this.name}!`); } }; person.greet(); // Hello, my name is Alice!
Метод Object.create() дозволяє створювати нові об’єкти на основі існуючого об’єкта-прототипа.
const prototypeUser = { greet() { console.log(`Hello, I am ${this.name}`); } }; const newUser = Object.create(prototypeUser); newUser.name = "Alice"; newUser.greet(); // Hello, I am Alice
В синтаксисі JavaScript класи використовуються для створення шаблонів об’єктів. Це дозволяє створювати багато екземплярів об’єктів із однаковою структурою.
class User { constructor(name, age) { this.name = name; this.age = age; } greet() { console.log(`Hi, I'm ${this.name}!`); } } const user1 = new User("Alice", 20); user1.greet(); // Hi, I'm Alice!
Як бачите, об’єкти в JavaScript є доволі гнучкою структурою, яка виконує дії для зберігання та обробки даних. Вони можуть містити вкладені об’єкти та методи, які дозволяють створювати складні структури й динамічні додатки.
В мові JavaScript існує оператор typeof, який дозволяє визначити тип значення або змінної. Цей оператор дуже корисний при потребі перевірити типи даних, якщо вони можуть змінюватися під час виконання програми.
typeof — це оператор, який повертає тип даних у вигляді рядка. Його можна використовувати з будь-яким типом значення, і результат завжди буде рядком, який описує тип даних цього значення.
console.log(typeof 42); // "number" console.log(typeof "Hello"); // "string" console.log(typeof true); // "boolean" console.log(typeof undefined); // "undefined"
Синтаксис оператора typeof дуже простий. Його можна застосовувати до змінних, літералів, функцій та виразів:
Змінна:
let age = 21; console.log(typeof age); // "number"
Літерал:
console.log(typeof "text"); // "string" console.log(typeof 100); // "number"
Функція:
function greet() { return "Hello!"; } console.log(typeof greet); // "function"
Вираз:
console.log(typeof (2 + 2)); // "number"
Оператор typeof корисний для програміста, але він має кілька особливостей, які можуть заплутати новачків.
Результат typeof null є “object”, хоча це і примітивний тип. Це багаторічна помилка, яка існує через технічні причини та сумісність зі старими версіями JavaScript. null є окремим типом даних, який вказує на відсутність об’єкта, але typeof все одно повертає “object”.
console.log(typeof null); // "object"
Масиви в JavaScript є об’єктами, тому typeof для масиву також поверне “object”. Це може бути неочікуваним. Для перевірки, чи є значення масивом, краще використовувати метод Array.isArray().
const arr = [1, 2, 3]; console.log(typeof arr); // "object" console.log(Array.isArray(arr)); // true
Хоча функції є об’єктами, typeof для функції поверне “function”. Це зручно для перевірки, чи є значення функцією.
function example() {} console.log(typeof example); // "function"
Тип BigInt був доданий у ECMAScript 2020 для представлення великих цілих чисел. Оператор typeof повертає “bigint” для значень цього типу.
const bigIntValue = 12345678901234567890n; console.log(typeof bigIntValue); // "bigint"
Оператор typeof часто використовують для динамічної перевірки типу даних у коді. Наприклад:
function processData(data) { if (typeof data === "string") { console.log("Це рядок:", data); } else if (typeof data === "number") { console.log("Це число:", data); } else if (typeof data === "boolean") { console.log("Це булеве значення:", data); } else { console.log("Тип невідомий"); } } processData("Hello"); // Це рядок: Hello processData(42); // Це число: 42 processData(true); // Це булеве значення: true
Через особливості typeof, для перевірки значень null та масивів краще використовувати інші методи.
Перевірка на null:
let value = null; console.log(value === null); // true
Перевірка на масив:
let items = [1, 2, 3]; console.log(Array.isArray(items)); // true
Оператор typeof є дуже корисним інструментом при перевірці типів даних у JavaScript, але він має обмеження та особливості, які варто враховувати. Для складніших випадків, таких як перевірка на null, масиви або інші спеціальні об’єкти, краще використовувати додаткові методи, такі як Array.isArray() та порівняння з null.
Розуміння типів даних у JavaScript є базою для написання коректного та ефективного коду в JavaScript. Від примітивних типів, таких як Number, String та Boolean, до об’єктних структур, таких як Object та Array, різноманіття типів дозволяє ефективно зберігати та обробляти дані. Окрім того, вміння використовувати перетворення типів допомагає розробнику уникнути помилок і забезпечити відповідність значень очікуваним типам.
Швейцарська компанія з кібербезпеки Prodaft запустила ініціативу під назвою «Продай своє джерело», в рамках якої…
Презентовано JRuby 10 — останню версію реалізації мови програмування Ruby на основі JVM. Вона має…
Компанія Ілона Маска xAI презентувала новий онлайн-інструмент під назвою Grok Studio. Він призначений для редагування…
В освітній платформі «Мрія» планують впровадити генератор тестів на основі штучного інтелекту. Про це в…
OpenAI працює над власною X-подібною соціальною мережею, згідно з кількома джерелами, знайомими з цим питанням,…
Команда Unit 42 з Palo Alto Networks помітила чергову активність хакерської групи з КНДР, яка…