Что такое let в JavaScript?
Основы языка
`let` — способ объявить переменную с блочной областью видимости, значение которой можно переприсваивать. Появился в ES6 как замена var.
Свойства let
- Блочная область — видна только внутри
{}, где объявлена. - Можно переприсваивать — в отличие от
const. - Нельзя переобъявлять в том же скоупе —
SyntaxError. - TDZ — до строки объявления обращение кинет
ReferenceError. - Инициализация необязательна (
let x;→undefined).
let count = 0;
count = 1; // ок
let count = 2; // SyntaxError в том же скоупеlet против var
- Область:
let— блочная,var— функциональная. - Hoisting:
let— TDZ,var—undefined. - Переобъявление:
let— запрещено,var— разрешено.
Классический пример с циклом
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i)); // 0, 1, 2
}let создаёт новую переменную на каждой итерации, поэтому замыкание захватывает своё i (с var было бы 3, 3, 3).
Коротко для собеседования
let — блочная переменная с возможностью переприсваивания и TDZ. В отличие от var — не функциональная область, не всплывает как undefined, нельзя переобъявить. В циклах создаёт отдельную переменную на итерацию.