for (let i = 0; i < 3; i++) {
}
console.log(i)
// output: ReferenceError: i is not defined
以上代码报错,说明设置循环变量的部分与外部作用域不是同一个块作用域
for (let i = 0; i < 3; i++) {
let i = 'x'
console.log(i)
}
// output:
// x
// x
// x
以上代码正常运行,在循环体中可以使用 let 重新声明 i,说明设置循环变量的部分和循环体内部处于两个不同的块作用域
结论:for循环中设置循环变量的部分为一个单独的块作用域