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