Skip to main content

Способи оголосити змінну

У 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 - тільки якщо змінна дійсно має змінюватися.


Коротке порівняння:

Особливістьvarletconst
Область видимостіФункціональнаБлочнаБлочна
Можна перевизначитиТакНіНі
Можна змінити значенняТакТакНі
Спливання (hoisting)Так, зі значенням undefinedТак, але не можна використовувати до оголошенняТак, але не можна використовувати до оголошення
Сучасний стандартНі, застарівТакТак

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.