PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Что такое 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, нельзя переобъявить. В циклах создаёт отдельную переменную на итерацию.

Другие вопросы раздела