Объяснение `let` и блока scoop с циклами for

Я это понимаюlet предотвращает дублирование объявлений, что приятно.

let x;
let x; // error!

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

let i = 100;
setTimeout(function () { console.log(i) }, i); // '100' after 100 ms

Что мне трудно понять, так это то, какlet относится к петлям. Это, кажется, характерно дляfor петли. Рассмотрим классическую проблему:

// prints '10' 10 times
for (var i = 0; i < 10; i++) { process.nextTick(_ => console.log(i)) }
// prints '0' through '9'
for (let i = 0; i < 10; i++) { process.nextTick(_ => console.log(i)) }

Почему используетсяlet в этом контексте работаешь? В моем воображении, хотя виден только один блок,for на самом деле создает отдельный блок для каждой итерации иlet объявление делается внутри этого блока ... но есть только одинlet декларация для инициализации значения. Это просто синтаксический сахар для ES6? Как это работает?

Я понимаю разницу междуvar а такжеlet и проиллюстрировали их выше. Мне особенно интересно понять, почему разные объявления приводят к разным выводам, используяfor петля.

Ответы на вопрос(3)

Ваш ответ на вопрос