// for是一个区块,内部又是一个小区块,你的代码可以简写为
{
let i = 0; // i作用于这个大区块
{
var i = 'abc'; // 此处的i也作用于这个大区块
console.log(i);
}
}
{
let i = 0; // i作用于这个大区块
{
let i = 'abc'; // i作用于这个小区块
console.log(i);
}
}
// 如果你这么写是可以的
for (var i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// 简写
{
var i = 0; // i作用于这个大区块
{
let i = 'abc'; // i作用于这个小区块
console.log(i);
}
}
为什么let能重复声明? 图示
关于let声明跟var声明为什么会冲突? 首先 var 声明会提升到当前作用的顶端,即顺序是这样的:
var i
才是开始走for循环
才开始解析 let i = 0 --->报错
再看图