Учебник по JavaScript

Что позволено?

let — это новое ключевое слово, введенное в ECMAScript 6 (также известное как ES6), которое объявляет переменную с блочной областью действия, аналогичную var. Основное различие между let и var заключается в том, что переменные, объявленные с помощью let, не подлежат подъему переменных и доступны только в пределах блока, в котором они определены.

Использование let

Вот пример использования let для объявления переменной в JavaScript:

let x = 10;
console.log(x); // Output: 10

Вы также можете использовать let для объявления переменных с одинаковыми именами в разных блоках, и они будут рассматриваться как отдельные переменные:

let x = 10;

if (x > 5) {
  let y = 5;
  console.log(y); // Output: 5
}

console.log(y); // Output: Uncaught ReferenceError: y is not defined

В приведенном выше примере переменная y доступна только в пределах блока, определенного оператором if.

Зачем использовать let?

Одна из причин использования let заключается в том, что это помогает предотвратить случайное или непреднамеренное объявление переменных. Например, рассмотрим следующий код:

for (var i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(i);
  }, 1000);
}

Если вы запустите этот код, вы увидите, что пять раз выводится 5, а не ожидаемое 0, 1, 2, 3, 4. Это связано с тем, что ключевое слово var относится к области действия функции, а не блока, поэтому переменная i доступна во всей функции, в том числе в функции тайм-аута.

Чтобы решить эту проблему, вы можете использовать let для объявления переменной i, которая будет создавать новую переменную i для каждой итерации цикла:

for (let i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(i);
  }, 1000);
}

Теперь вывод будет таким, как ожидалось: 0, 1, 2, 3, 4.