javascript - Verwirrt über die Let-in-for-Schleife in ES6?
大家讲道理2017-05-19 10:14:43
0
2
507
Wie im Bild oben gezeigt, zeigt das Bild oben, dass ich deklariert wurde, das heißt, es kann nicht wiederholt deklariert werden, aber im Bild unten kann es mit let erneut deklariert werden. Warum?
// 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 --->报错
再看图