# Розділ 3.Типи даних

&#x20;    На даний момент в **JS** відомо 8 типів даних:

* **Примітивні** (тобто не можна змінити їх частину, наприклад було число 52 і зробити з нього 5тест. Доступна тільки повна заміна значення):

&#x20;       1\. **Boolean** - логічне значення типу правда/неправда, може бути лише **true** або **false**;

&#x20;       2\. **String** - текстове значення, пишеться завжди в лапках (наприклад **"апельсин"**);

&#x20;       3\. **Number** - числове значення, пишеться без лапок звичайне число (наприклад **43**);

&#x20;       4\. **BigInt** - числове значення більше **9007199254740992** (2 в 53 степені). Дані числа пишуться з додаванням у кінці латинської літери **"n"** (наприклад **9007199254740993n**).

&#x20;       5\. **Null** - по своїй суті пустота, може бути лише **null**;

&#x20;       6\. **Undefined** - невідоме значення (наприклад  написали що існує таке значення як **name** але не написали чому воно дорівнює і коли захотіли вивести його в консолі браузера - то напише нам **undefined** - використовується як відображення помилки - щоб не забувати використовувати всі значення);

&#x20;       7\. **Symbol** - символьний тип, який є унікальним і його неможливо змінити. Використовується в           більшості випадків самими розробниками мови як ключ в об'єктах (наприклад необхідно дізнатись чи даний користувач є адміном). Одна з причин чому його використовують - його назва не впливає на сам об'єкт і може бути однаковою як і ключі самого об'єкту (тобто в об'єкті є ключі "Ім'я", "Вік", "Стать" і Ви бажаєте додати новий ключ але не знаєте чи така назва існує - спокійно можна додати значення символьного типу). Рахується екзотикою в кодуванні але якщо маєте достатньо навичок роботи з даним типом - можливо уникнути багатьох помилок у майбутньому.

* **Object** - об'єкт, асоціативний масив, комірка пам'яті або ж набір ключ/значення - називають по різному але суть доволі проста - є ключ "Вік" і є його значення "25" і ось об'єкт є сукупністю таких пар ключ/значення. Ви можете знайти необхідне Вам значення за ключем, можете додавати/редагувати/видаляти ключ або значення у даному об'єкті.

&#x20;    Що ж досить теорії - перейдемо до практики. Створюємо стандартно **папку** (тека укр.), в ній відповідно два файли **index.html** та **script.js**. Текст в **index.html**:

```markup
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script src="script.js"></script>
</body>
</html>
```

&#x20;      І напишемо усі 8 значень різних типів, які ми вивчили (**ПРИМІТКА**: коли значення створюється вперше перед ним пишуть слово **var**. Детальніше про дане слово буде розписано у наступному розділі). Текст **script.js**:

```javascript
'use strict';

var a = true;                // Boolean

console.log(a);

var b = "Банан"              // String

console.log(b);

var c = 5;                   // Number

console.log(c);

var d = 9007199254740993     /* теж Number проте його обріже так як не може 
                                показати число більше ніж 9007199254740992 */

console.log(d);              // Покаже число 9007199254740992


var e = 9007199254740993n;   // BigInt

console.log(e);      

var f = null;                // Null

console.log(f);

var g = undefined;           // Undefined

console.log(g);

var h;

console.log(h);              // також покаже Undefined так як h - невідомо чому дорівнює

var i = {                    // Object - ключі як правило пишуть латинськими літерами
    Name: "Микита",          // Значення можуть бути любого з типу з 8 відомих
    Age: 25,
    Child: {
        Name: "Софія",
        Age: 4
    }
}

console.log(i);

```

&#x20;    Для того щоб побачити тип значення використовують **typeof** :

```javascript
'use strict';

var a = true;

console.log(typeof a); // покаже boolean
```

&#x20;    Ось такі у **JS** типи дани&#x445;**.** Логічно, що з ними можна робити дуже багато різних дій, як додавання чи віднімання чисел, зміна значень в об'єктах чи перевірка виразів на те чи вони вірні/невірні проте не переживайте всі ці дії ми будемо робити під час навчання. В наступному розділі ми з Вами дізнаємось що таке функція у **JS.**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://angularlessons.gitbook.io/javascriptiseasy/rozdil-3.tipi-danikh.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
