Вы не можете повторно объявить одну и ту же переменную в пределах той же области действия.
let scope = "declaration one";
let scope = "declaration two"; //error
Однако каждая область может иметь собственное объявление переменной, и внутренние области могут переопределять родительские области, но только временно, пока эта область сохраняется.
let scope = "outer scope";
if (true) {
let scope = "inside if scope";
console.log(scope);
}
console.log(scope);
{
let scope = "inside block scope";
console.log(scope);
}
console.log(scope);
Итак, с циклом for
фаза инициализации составляет перед новой областью, введенной телом, поэтому вы можете повторно объявитьпеременная внутри.