Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Способи оголосити змінну». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Змінні в JavaScript** можна оголосити трьома способами: `var`, `let` і `const`. Вони відрізняються областю видимості, можливістю перевизначення та поведінкою при спливанні (hoisting). **Ключове:** Використовуй `const` типово, а `let` - тільки якщо змінна дійсно має змінюватися; `var` у сучасному коді використовувати не рекомендується.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняУ JavaScript є **три способи оголосити змінну**: `var`, `let` і `const`. Вони відрізняються **областю видимості**, **можливістю перевизначення** та **поведінкою при спливанні (hoisting)**. Розберемо детально. --- ## **1.** `var` **- старий спосіб (ES5 і раніше)** ```javascript var name = 'Tim'; ``` ### Особливості: - Можна **переоголошувати** та **перезаписувати**: ```javascript var x = 10; var x = 20; // не викликає помилки ``` - **Функціональна область видимості** (ігнорує блоки `{}`) ```javascript if (true) { var a = 5; } console.log(a); // 5 - змінна "вирвалася" за межі блока ``` - **Спливає (hoisting)** - змінна доступна до оголошення, але значення `undefined`: ```javascript console.log(user); // undefined var user = 'Alex'; ``` > Використовувати `var` у сучасному коді **не рекомендується**. --- ## **2.** `let` **- сучасний спосіб для змінних, що змінюються** ```javascript let age = 25; age = 26; // можна змінювати ``` ### Особливості: - Можна **змінювати значення**, але не можна повторно оголосити в тому самому блоці: ```javascript let a = 1; // let a = 2; Помилка ``` - **Блочна область видимості**: ```javascript if (true) { let x = 10; } console.log(x); // ReferenceError - змінна не видна за межами блока ``` - Недоступна до оголошення (на відміну від `var`): ```javascript console.log(a); // ReferenceError let a = 5; ``` > Використовуй `let`, коли значення змінної буде **змінюватися**. --- ## **3.** `const` **- константа (незмінне посилання)** ```javascript const PI = 3.14; ``` ### Особливості: - Не можна **перевизначити** або **повторно оголосити**: ```javascript const x = 10; x = 20; // TypeError ``` - Але якщо це **об'єкт або масив**, внутрішні дані змінювати можна: ```javascript const user = { name: 'Tim' }; user.name = 'Alex'; // можна // user = {} не можна перевизначити саме посилання ``` - **Блочна область видимості** - як у `let`. > Використовуй `const` **типово**, а `let` - тільки якщо змінна дійсно має змінюватися. --- ## Коротке порівняння: | Особливість | `var` | `let` | `const` | |---|---|---|---| | Область видимості | Функціональна | Блочна | Блочна | | Можна перевизначити | Так | Ні | Ні | | Можна змінити значення | Так | Так | Ні | | Спливання (hoisting) | Так, зі значенням `undefined` | Так, але не можна використовувати до оголошення | Так, але не можна використовувати до оголошення | | Сучасний стандарт | Ні, застарів | Так | Так |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.