JS об'єкт let
Загальний опис
let
— це ключове слово в JavaScript, яке використовується для оголошення змінних із блочною (локальною) областю видимості. Змінні, оголошені за допомогою let
, доступні тільки в тому блоці коду, де вони були визначені, включаючи вкладені блоки. Ця властивість дозволяє уникати багатьох проблем із повторним оголошенням змінних, які могли виникати при використанні var
.
Одна з ключових переваг let
— це обмеження видимості змінної до блоку, де вона була оголошена. Наприклад:
if (true) {
let a = 10;
console.log(a); // 10
}
console.log(a); // Помилка: a не визначена
На відміну від var
, змінні, оголошені через let
, не «вспливають» (hoisting) в сенсі, що їх не можна використовувати до оголошення:
console.log(a); // Помилка: Cannot access 'a' before initialization
let a = 5;
let
також дозволяє уникати повторного оголошення змінної в межах одного блоку, що сприяє більшій передбачуваності коду:
let x = 10;
// let x = 20; // Помилка: Identifier 'x' has already been declared
x = 20; // Оновлення значення змінної дозволено
Ще однією важливою особливістю let
є те, що змінні, оголошені через нього, прив'язані до блоку та ігнорують циклічне замикання (closure) в межах лямбда-функцій. Це корисно, наприклад, у випадку з циклами:
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// Виведе: 0, 1, 2
Таким чином, let
є ідеальним вибором для роботи з локальними змінними, що використовуються в межах окремих блоків, функцій або циклів.
Порада: | Завжди використовуйте |
Порада: | Уникайте повторного оголошення змінних у межах одного блоку. Хоча JavaScript не дозволить цього, явне управління змінними допоможе уникнути логічних помилок. |
Порада: | Звертайте увагу на «мертву зону» (Temporal Dead Zone). Використовуйте |
Синтаксис
let ім'яЗмінної = значення;
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
49 |
44 |
10 |
17 |
14 |
Переглядач | ||||
---|---|---|---|---|
49 |
49 |
44 |
10 |
Переглядач | ||
---|---|---|
6.0.0 |
1.0 |
Приклади
У цьому прикладі let
забезпечує, що змінна i
має окреме значення для кожної ітерації, навіть у випадку асинхронних запитів. Це допомагає уникнути помилок, коли всі запити посилаються до одного і того ж індексу.
const urls = ['url1', 'url2', 'url3'];
for (let i = 0; i < urls.length; i++) {
fetch(urls[i])
.then(response => response.json())
.then(data => console.log(`Дані з URL ${i}:`, data))
.catch(error => console.error(`Помилка на URL ${i}:`, error));
}
Тут змінна sum
, оголошена через let
, обмежена тільки внутрішнім циклом. Це дозволяє уникати непередбачуваних конфліктів з іншими змінними поза циклом.
for (let i = 0; i < 3; i++) {
let sum = 0;
for (let j = 0; j < 3; j++) {
sum += i + j;
}
console.log(`Сума для i=${i}:`, sum);
}
// console.log(sum); // Помилка: sum не визначена