Ключове слово const
у JavaScript використовується для оголошення змінних, значення яких повинні залишатися сталими, тобто їх не можна змінювати після первісного встановлення.
// Оголошення однієї й тієї ж змінної `const` кілька разів у глобальній області недоступне і призводить до помилки
const tip = 100;
const tip = 200; // Помилка: Ідентифікатор 'tip' вже було оголошено
Однак ви можете мати кілька оголошень const
з однаковим іменем всередині циклу.
// Оголошення однієї й тієї ж змінної `const` кілька разів у циклі дозволене
for (let i = 0; i < 3; i++) {
const tip = i * 10;
console.log(tip); // Виведення: 0, 10, 20
}
У наведеному коді змінна const
з іменем tip
оголошується кілька разів.
Що тут відбувається? Чому це дозволено?
У JavaScript змінні, оголошені за допомогою const
і let
, мають блочну область видимості, що означає, що вони існують лише в межах блоку, в якому були оголошені.
Кожна ітерація циклу створює нову область видимості блоку, тому ви можете оголосити нову змінну const
або let
з однаковим ім'ям на кожній ітерації.
Однак, коли ви оголошуєте змінну const
або let
в глобальній області видимості (поза будь-якою функцією чи блоком), вона існує протягом усього сценарію. Якщо ви спробуєте оголосити ще одну змінну const
або let
з таким самим ім'ям у глобальній області, ви отримаєте помилку, оскільки намагаєтеся оголосити змінну знову в тій самій області видимості.
Оригінально опубліковано на https://tahajiru.com.
Перекладено з: Why Can You Have Multiple Const Declarations with the Same Name Inside a Loop?